λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“  archive

[Haskell Tutorial] Module

by HandHand 2022. 11. 28.

 

πŸ“Œ Module

λͺ¨λ“ˆμ΄λž€ μš°λ¦¬κ°€ μž‘μ„±ν•œ 파일 λ‹¨μœ„μ˜ API (ν•¨μˆ˜ 및 νƒ€μž…λ“€) λ­‰μΉ˜μž…λ‹ˆλ‹€.

Haskell μ—μ„œλŠ” 각각의 파일이 ν•˜λ‚˜μ˜ λͺ¨λ“ˆμž…λ‹ˆλ‹€.

λͺ¨λ“ˆμ€ μ˜λ¬ΈλŒ€λ¬Έμžλ‘œ μ‹œμž‘ν•˜λŠ” 이름을 가지며(Html.hs), λͺ¨λ“ˆμ„ μ •μ˜ν•˜λŠ” μͺ½μ—μ„œ

μ™ΈλΆ€λ‘œ κ³΅κ°œν•˜κΈ°λ₯Ό μ›ν•˜λŠ” API 듀을 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

 

-- Html.hs

module Html
  ( Html
  , Title
  , Structure
  , html_
  , p_
  , h1_
  , append_
  , render
  )
  where

-- ... 각각의 API 듀에 λŒ€ν•œ κ΅¬ν˜„λΆ€

 

πŸ“Œ Internal Module

μ•žμ„œ module 을 export ν•œ 방식은 private ν•œ κΈ°λŠ₯듀에 μ ‘κ·Όν•˜μ§€ λͺ»ν•œλ‹€λŠ” νŠΉμ§•μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.

Haskell μ—μ„œλŠ” μ΄λŸ¬ν•œ 경우 module 에 λͺ¨λ‘ μ ‘κ·Ό κ°€λŠ₯ν•œ μ’€ 더 μœ μ—°ν•œ export 방식을 μ›ν•œλ‹€λ©΄

Internal Module μ΄λΌλŠ” λ””μžμΈ νŒ¨ν„΄μ„ μ‚¬μš©ν•  것을 ꢌμž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

 

Internal module 은 μ–Έμ–΄ μ°¨μ›μ—μ„œ μ§€μ›ν•˜λŠ” κΈ°λŠ₯은 μ•„λ‹ˆκ³ , κ·Έλƒ₯ λͺ¨λ“ˆμ„ λ‚΄λΆ€/μ™ΈλΆ€ 용으둜 λΆ„λ¦¬ν•΄μ„œ

stable / experimental ν•œ κΈ°λŠ₯듀을 λͺ…μ‹œμ μœΌλ‘œ λΆ„λ¦¬ν•˜μ—¬ export ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€.

μ•žμ„  μ˜ˆμ œμ—μ„œ Html.hs λ₯Ό λ‹€μŒκ³Ό 같이 λΆ„λ¦¬ν•΄λ΄…μ‹œλ‹€.

 

-- Html/Internal.hs

{- 기쑴에 Html.hs 에 있던 λͺ¨λ“  μ½”λ“œ κ°€μ Έμ˜€κΈ° -}
-- Html.hs

module Html
  (Html, Title, Structure, html_, p_, h1_, append_, render)
  where

import Html.Internal

 

이λ₯Ό 톡해 Html.Internal μ—μ„œλŠ” λͺ¨λ“  API 에 μ ‘κ·Ό κ°€λŠ₯ν•˜μ§€λ§Œ

μ‚¬μš©μ— μœ μ˜ν•΄μ•Ό ν•œλ‹€λŠ” 것을 λͺ…μ‹œμ μœΌλ‘œ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ°˜μ‘ν˜•

'πŸ“  archive' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Haskell Tutorial] Recursion  (0) 2022.12.31
[Haskell Tutorial] High Order Function  (0) 2022.12.31
[Haskell Tutorial] Type  (0) 2022.11.28
[Haskell Tutorial] Function & Chaining  (0) 2022.11.28
[Haskell Tutorial] Hello World!  (0) 2022.11.28

πŸ’¬ λŒ“κΈ€