[Erlang] module

[์›๋ณธ ๋งํฌ]

erlang์˜ ๋ชจ๋“ˆ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•œ๋‹ค.

erlang์˜ ๋ชจ๋“ˆ์€ ๋‹จ์ผ ํŒŒ์ผ์„ ๋‹จ์œ„๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„๋œ๋‹ค.
๋ชจ๋“  ์†Œ์Šค์ฝ”๋“œ์˜ ์ตœ์ƒ๋‹จ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ๋“ˆ ์„ ์–ธ์‹์ด ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

-module(test). 

...์ฝ”๋“œ๋“ค

์กฐ๊ธˆ ์œ ์˜ํ•  ์ ์€, ํŒŒ์ผ๋ช…๊ณผ ๋ชจ๋“ˆ๋ช…์€ ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
ํŒŒ์ผ๋ช…์ด test.erl๋ฉด ๋ชจ๋“ˆ๋ช…๋„ test๋‹ค.

์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ hello world ์ฝ”๋“œ๋‹ค.

์ € ๋ชจ๋“ˆ๋ช…์€ test๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“ˆ ๋‚ด์— ์กด์žฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์™ธ๋ถ€์—์„œ ์“ธ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฐฉ์ถœ(export)๋ฅผ ํ•ด์•ผํ•˜๋Š”๋ฐ, ๊ทธ๊ฒŒ ์ €๊ธฐ ์ƒ๋‹จ์— ์žˆ๋Š” export๋ฌธ์ด๋‹ค.
์ €๊ธฐ์„œ๋Š” ๋ฉ”์ธ ์ง„์ž…์ ์œผ๋กœ ์‚ฌ์šฉํ•  main ํ•จ์ˆ˜๋ฅผ ๋‚ด๋ณด๋ƒˆ๋Š”๋ฐ, export ๋ฌธ์—๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ•จ์ˆ˜ ์‹œ๊ทธ๋„ˆ์ฒ˜๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•จ์ˆ˜ ์‹œ๊ทธ๋„ˆ์ฒ˜๊ฐ€ ์ข€ ๋…ํŠนํ•œ ํŽธ์ด๋‹ค. ์ €๊ธฐ์„œ main/0์€ ํ•จ์ˆ˜ ์ด๋ฆ„์ด main์ด๊ณ , ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐœ์ˆ˜๊ฐ€ 0๊ฐœ๋ผ๋Š” ๋œป์ด๋‹ค. ๋”ฐ๋กœ ํƒ€์ž…์— ๋Œ€ํ•œ ํ‘œํ˜„์€ ์—†๋‹ค.
๋งŒ์•ฝ ์ €๊ธฐ์„œ ๊ฐ„๋‹จํ•œ ๋ง์…ˆํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ exportํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด,

์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.




export์™€ import

์ด๋ฒˆ์—๋Š” export์™€ import๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋“ˆ๋ผ๋ฆฌ ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋‚ด๋ณด๋‚ด๊ณ  ๊ฐ–๋‹ค์“ฐ๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณด๊ฒ ๋‹ค.

์ผ๋‹จ, export์šฉ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ ๋งˆ๋ จํ•ด๋ดค๋‹ค.
๋ณ„๊ฑฐ์—†๋‹ค. ๋ง์…ˆ ํ•˜๋‚˜์— ๋บ„์…ˆ ํ•˜๋‚˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  importํ•˜๋Š” ์ธก์—์„œ๋Š”, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋“ˆ๋ช…๊ณผ, ๊ทธ ์•ˆ์— ์žˆ๋Š” ๊ฐ€์ ธ์˜ฌ ํ•จ์ˆ˜๋“ค์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ชจ๋“ˆ๋ช…:ํ•จ์ˆ˜๋ช…์˜ ํ˜•ํƒœ๋กœ ํ˜ธ์ถœํ•œ๋‹ค.

๋‹ค ์ปดํŒŒ์ผํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.
๋‹ค๋งŒ ์œ ์˜ํ•  ์ ์€, ์—ฌ๊ธฐ์„œ ๋ณ„๋‹ค๋ฅธ ์„ค์ •์„ ํ•˜์ง€ ์•Š์œผ๋ฉด. ํ•จ๊ป˜ ์‹คํ–‰๋  ๋ชจ๋“ˆ๋“ค์€ ํ•ญ์ƒ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์•„๋ฌดํŠผ ๊ทธ๋Ÿผ ์ž˜ ๋™์ž‘ํ•  ๊ฒƒ์ด๋‹ค.




๋ณต์žกํ•œ ๊ตฌ์„ฑ์€ ์ž˜ ๋ชปํ•ด์š”

erlang์˜ ๋ชจ๋“ˆ์‹œ์Šคํ…œ์€ ๋งค์šฐ ์›์‹œ์ ์ด๊ณ  ๋‹จ์ถœํ•˜๋‹ค.
๋ง‰.. ๊ณ„์ธตํ˜•์œผ๋กœ ๋ชจ๋“ˆ์„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„ธ๋ถ„ํ™”ํ•ด์„œ ์Œ“๊ณ  ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ธฐ๋ฐ˜์œผ๋กœ importํ•˜๊ฑฐ๋‚˜ ๊ทธ๋Ÿฐ๊ฑด ๋ชปํ•œ๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ์ฝ”๋“œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋‚˜๋ˆ ๋„ ํฐ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์–ด์ฐจํ”ผ ์ปดํŒŒ์ผํ•˜๋ฉด

beam ํŒŒ์ผ๋“ค์„ ํ‰ํ‰ํ•œ(flat) ํ˜•ํƒœ๋กœ ๋˜์ €์ฃผ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ €๋ ‡๊ฒŒ ์“ธ์ˆ˜๋ฐ–์— ์—†๋‹ค.
ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค ์Ÿ์•„๋ถ“๊ณ  ๊ธ€๋กœ๋ฒŒํ•˜๊ฒŒ ๋กœ๋“œํ•ด์„œ ์“ฐ๋Š”๊ฒŒ ์œ ์ผํ•œ ์‚ฌ์šฉ๋ฒ•์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ชจ๋“ˆ ์ด๋ฆ„์ด ๊ฒน์น˜์ง€ ์•Š๊ฒŒ ์•„์ฃผ ์ž˜ ์ง€์–ด์ค˜์•ผ ํ•œ๋‹ค.



์ฐธ์กฐ
https://www.tutorialspoint.com/erlang/erlang_modules.htm
https://stackoverflow.com/questions/4476108/namespaces-and-records-in-erlang