๐ก ํด๋น ํฌ์คํธ๋ Learn Haskell by building a blog generator ๋ฅผ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
๐ Haskell ๊ฐ๋ฐํ๊ฒฝ ์ค์
๊ฐ์ฅ ๋จผ์ GHCup ์ ์ค์นํด์ค๋๋ค.
Haskell ๊ฐ๋ฐ์ ํ์ํ HLS
, ghc
๋ฑ์ ๋ฒ์ ๋ณ๋ก ํธํ๊ฒ ๊ด๋ฆฌํ ์ ์๋ ๋๊ตฌ์
๋๋ค.
curl --proto '=https' --tlsv1.2 -sSf <https://get-ghcup.haskell.org> | sh
์ค์น๊ฐ ๋๋๋ฉด, ๋ค์ ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ฌ ์ฌ์ฉ๊ฐ๋ฅํ ํด ๋ฒ์ ๋ค์
ํ๋์ ํ์ธํ๋ฉฐ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
$ ghcup tui
vscode ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ Haskell ํ๋ฌ๊ทธ์ธ
์ ์ค์นํฉ๋๋ค.
๐ ์ฒซ๋ฒ์งธ Haskell ํ๋ก๊ทธ๋จ
์ ๋ฌธ์ ์ญ์ Hello World ์ด์ฃ ?
// hello.hs
main = putStrLn "Hello World!"
์ด์ ํ์ค์ผ ํ์ผ์ ์ปดํ์ผํด์ค๋๋ค.
$ ghc hello.hs
์ปดํ์ผํ๋ฉด hello ์ ํจ๊ป hello.o
์ hello.hi
๋ ํจ๊ป ์์ฑ๋๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
hello ๋ ์คํ ๊ฐ๋ฅํ ํ์ผ์ด๊ณ hello.o
๋ ๋ฐ์ด๋๋ฆฌ ์ค๋ธ์ ํธ ํ์ผ์
๋๋ค.
.hi ๋ ์ค๋ธ์ ํธํ์ผ์ด ํ์๋ก ํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ด์ ํ์ผ๋ก,
์๋ก ๋ค๋ฅธ ์ค๋ธ์ ํธ ๋ชจ๋๋ค์ ๋ก๋ํ ๋ ๋งํฌ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ญํ ์ ํฉ๋๋ค.
(C์ธ์ด๋ก ๋ฐ์ง๋ฉด .o ๋ object ํ์ผ, .hi ๋ .h ํ์ผ๊ณผ ๋์๋๋ค๊ณ ๋ณผ ์ ์๊ฒ ๋ค์)
$ ./hello
ํน์ ๋ค์๊ณผ ๊ฐ์ด runhaskell
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด๋ ๋๋ค.
์ ์ปค๋ฉ๋๋ ghc ์ค์นํ๋ฉด ํจ๊ป ๋ด์ฅ๋์ด์๋ค.
$ runhaskell hello.hs
// Hello World!
shell redirection
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด html ํ์ผ๋ก output ์ ์์ฑํ ์ ์์ต๋๋ค.
$ runhaskell hello.hs > hello.html
/**
* hello.html
*
* <html>
* <body>Hello, World!</body>
* </html>
*/
๐ ์ฃผ์
Haskell
์์ ์ฃผ์์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํฉ๋๋ค.
-- single line comment
ํน์
{- single line comment -}
ํน์
{-
multi line comment
-}
๐ ์ฐธ๊ณ ์๋ฃ
Learn Haskell by building a blog generator
'๐ archive' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Haskell Tutorial] Type (0) | 2022.11.28 |
---|---|
[Haskell Tutorial] Function & Chaining (0) | 2022.11.28 |
[Design Pattern] PUB-SUB ํจํด (0) | 2022.06.13 |
JWT (JSON Web Token) (0) | 2022.05.23 |
Cookie & Web Storage (0) | 2022.05.22 |
๐ฌ ๋๊ธ