JiwonDev

ํ•˜์Šค์ผˆ ๊ฐœ๋ฐœํ™˜๊ฒฝ (stack + IntelliJ plugin)

by JiwonDev

#1. ํ•˜์Šค์ผˆ ์ปดํŒŒ์ผ๋Ÿฌ

๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ํ•˜์Šค์ผˆ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” GHC(glasgow haskell compiler)์ด๋ฉฐ

์ฝ˜์†”์ฐฝ์—์„œ ์‚ฌ์šฉ ์‹œ GHCI (GHC ์ธํ„ฐํ”„๋ฆฌํ„ฐ)๋ฅผ ์ด์šฉํ•ด์„œ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” Stack์„ ์ด์šฉํ•ด์„œ ์„ค์น˜ ํ• ๊ฑฐ๋ผ ์ฝ˜์†”์ฐฝ์— ์‚ฌ์šฉํ• ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰์‹œํ‚ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

>> stack ghci 


#2. Stack (ํ•˜์Šค์ผˆ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋„๊ตฌ)

2015๋…„์— ๋‚˜์˜จ ํ•˜์Šค์ผˆ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

ํ•˜์Šค์ผˆ๋„ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๊ธฐ์กด์—๋Š” ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ ๊ด€๋ฆฌ (๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๋ฒ„์ „์ด ๊ผฌ์ด๋Š” ๊ฒƒ)๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ•ด์™”๋Š”๋ฐ stack์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋ฉฐ ๊ทธ ์—ญํ• ์„ ๋Œ€์‹ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ๋กœ stack์„ ์„ค์น˜ํ•˜๋ฉด GHC(ํ•˜์Šค์ผˆ ์ปดํŒŒ์ผ๋Ÿฌ)๋„ ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

* [๋”๋ณด๊ธฐ] ๊ทธ๋Ÿผ ๊ธฐ์กด์—๋Š” ๋ฌด์—‡์„ ์‚ฌ์šฉํ–ˆ๋‚˜์š”?

๋”๋ณด๊ธฐ

1. ๊ธฐ์กด์—๋Š” Cabel์ด๋ผ๋Š” ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

2. ๊ธฐ์กด์—๋Š” ํ•˜์Šค์ผˆ ํ™ˆํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€์„œ Haskell Platform ( GHC + Cabal ๋นŒ๋“œ ๋„๊ตฌ + ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€)๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ํ˜„๋Œ€์˜ ํ•˜์Šค์ผˆ ํ”„๋กœ์ ํŠธ๋Š” ๋Œ€๋ถ€๋ถ„ stack์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ์šฐ๋ฆฌ๋„ stack์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ฉ์‹œ๋‹ค.

 

3. ํ•˜์Šค์ผˆ์˜ ํ‘œ์ค€ ํŒจํ‚ค์ง€ ์ €์žฅ์†Œ๋Š” Hackage, ์Šคํƒ์—์„œ ์“ฐ์ด๋Š” ํŒจํ‚ค์ง€ ์ €์žฅ์†Œ๋Š” Stackage ๋ผ ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

Stackage์—์„œ๋Š” ์–ด๋– ํ•œ ์กฐํ•ฉ์œผ๋กœ๋„ ํŒจํ‚ค์ง€ ์˜์กด์„ฑ์ด ๊ผฌ์ด์ง€ ์•Š๋„๋ก ๋ชจ์•„๋‘” ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ณตํ•ด์ค๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์—†๋Š”, ์ฆ‰ stack.yaml์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์˜ค๋ž˜๋œ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์˜›๋‚ ์— ์“ฐ๋˜ ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋„๊ตฌ(Cabel)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

4. Stack์— ๋Œ€ํ•ด ๋” ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

www.sangkon.com/haskell-study-part01/

 

Haskell ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

GHC(glasgow haskell compiler)๋Š” Haskell ์ปดํŒŒ์ผ๋Ÿฌ์ž…๋‹ˆ๋‹ค. 2018๋…„ 12์›” ๊ธฐ์ค€ ์ตœ์‹  ๋ฒ„์ „์€ 8.4.4 ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ํ•˜์Šค์ผˆ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด๊ฒƒ๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ๋‹ค๋ฅธ ์ปดํŒŒ์ผ๋Ÿฌ(Hugs, NHC, JHC, Yhc)๋„ ๋ช‡๊ฐ€์ง€ ์žˆ์ง€๋งŒ GHC๊ฐ€

www.sangkon.com


#3. ๊ฐœ๋ฐœํ™˜๊ฒฝ

๊ฐœ๋ฐœ ํ™˜๊ฒฝ์€ ๋ณธ์ธ์ด ์“ฐ๊ธฐ ํŽธํ•œ ๊ฑธ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ณดํ†ต ํŽธ์ง‘๊ธฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•ด์ฃผ๋Š”๋ฐ, ์—†์œผ๋ฉด ์ฝ˜์†”์ฐฝ ์—ด๊ณ  stack ์œผ๋กœ ์ง์ ‘ ์‹คํ–‰์‹œ์ผœ๋„ ๋ฉ๋‹ˆ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” IntelliJ + IntelliJ ํ•˜์Šค์ผˆ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ Vscode๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋ณดํ†ต haskero ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

(2020) ์–ด๋–ค IDE๊ฐ€ ํ•˜์Šค์ผˆ ๊ฐœ๋ฐœ์— ์ตœ๊ณ ์ผ๊นŒ์š”? 

 

What is the best IDE setup for developing in Haskell?

How you can get started with Haskell fast.

medium.com

* [๋”๋ณด๊ธฐ] IntelliJ ํ•˜์Šค์ผˆ ํ”Œ๋Ÿฌ๊ทธ์ธ 

๋”๋ณด๊ธฐ

github.com/rikvdkleij/intellij-haskell/blob/master/README.md

  • Syntax highlighting;
  • Error/warning highlighting;
  • Haskell Problems View. This tool window displays GHC messages for the currently edited files;
  • Find usages of identifiers;
  • Resolve references to identifiers;
  • Code completion;
  • In-place rename identifiers;
  • View type info from (selected) expression;
  • View quick documentation;
  • Structure view;
  • Navigate to declaration or identifier powered by Hoogle (called Navigate>Navigation by Hoogle in IntelliJ menu);
  • Inspection by HLint;
  • Quick fixes for HLint suggestions;
  • Show error action to view formatted messages. Useful in case message consists of multiple lines (Ctrl-F10, Meta-F10 on Mac OSX);
  • Intention actions to add language extension (depends on compiler error), add top-level type signature (depends on compiler warning);
  • Intention action to select which module to import if the identifier is not in scope;
  • Default code formatting by ormolu. Alternatively by stylish-Haskell.
  • Code completion for project module names, language extensions, and package names in Cabal file;
  • Running REPL, tests, and executables via Run Configurations;
  • Smart code completion on typed holes (since GHC 8.4);


# 3-1 IntelliJ ์„ค์น˜

๋ฌด๋ฃŒ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „์„ ์„ค์น˜ํ•ด๋„ ์ข‹๊ณ , ๋Œ€ํ•™์ƒ์ด๋ผ๋ฉด ํ•™๊ต ๊ณ„์ •์„ ์ด์šฉํ•ด ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

www.jetbrains.com/idea/download/#section=windows

 

Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains

Download the latest version of IntelliJ IDEA for Windows, macOS or Linux.

www.jetbrains.com


# 3-2 Stack ์„ค์น˜

์Šคํƒ์„ ์„ค์น˜ํ•˜๊ณ  ์„ค์น˜ํ•œ ์Šคํƒ์„ ์ด์šฉํ•ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋ฐ›์•„ ์ค์‹œ๋‹ค.

์ฐธ๊ณ ๋กœ stack์„ ์„ค์น˜ํ•˜๋ฉด GHC(ํ•˜์Šค์ผˆ ์ปดํŒŒ์ผ๋Ÿฌ)๋„ ํ•จ๊ป˜ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์œˆ๋„์šฐ10์— ์„ค์น˜ํ• ๊ฑฐ๋‹ˆ, ์•„๋ž˜ ๋งํฌ์—์„œ Windows ํ•ญ๋ชฉ์„ ์ฐพ์•„ 64-bit installer๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•ด์ค์‹œ๋‹ค.

docs.haskellstack.org/en/stable/install_and_upgrade/

 

Install/upgrade - The Haskell Tool Stack

Ensure you have required system dependencies installed. These include GCC, GNU make, xz, perl, libgmp, libffi, and zlib. We also recommend Git and GPG. To install these using your package manager: Debian / Ubuntu: sudo apt-get install g++ gcc libc6-dev lib

docs.haskellstack.org


์ฐธ๊ณ ๋กœ stack์˜ ๊ธฐ๋ณธ ์„ค์น˜ ๊ฒฝ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

>> C:\Users\[์‚ฌ์šฉ์ž ์ด๋ฆ„]\AppData\Roaming\local\bin\stack.exe

* ์•„๋ž˜ ๋„๊ตฌ๋“ค์€ IntelliJ-Haskell์—์„œ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•ด์ค๋‹ˆ๋‹ค. ์ž๋™ ์„ค์น˜๊ฐ€ ์•ˆ๋์„ ๋•Œ๋งŒ ํ•ด์ฃผ์„ธ์š”.

* ์„ค์น˜์—ฌ๋ถ€๋Š” Ctrl+Shift+A -> About Haskell Project - Help ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

- stack ์„ค์น˜๋ฅผ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด, ์ฝ˜์†”์ฐฝ(์œˆ๋„์šฐ+R -> cmd ์ž…๋ ฅ)์„ ์—ด์–ด ๊ฐœ๋ฐœ์šฉ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€๋กœ ์„ค์น˜ํ•ด์ค์‹œ๋‹ค.

- hindent (ํ•˜์Šค์ผˆ ์ฝ”๋“œ ํžŒํŠธ๋„๊ตฌ) , stylish-haskell(์ฝ”๋“œ ํฌ๋งทํŒ… ๋„๊ตฌ) , hlint (ํ•˜์Šค์ผˆ lint)

- ์ฐธ๊ณ ๋กœ hoogle(ํ•˜์Šค์ผˆ docs)๋Š” ์ž๋™์œผ๋กœ ์„ค์น˜๋ฉ๋‹ˆ๋‹ค.

>> stack install hindent stylish-haskell hlint

* [๋”๋ณด๊ธฐ] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ ์‹คํŒจ,  ~name~:: invalid argument(invalid character)

๋”๋ณด๊ธฐ

์œˆ๋„์šฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ž์—ด ๊ด€๋ จ ์˜ค๋ฅ˜(UTF-8)์ž…๋‹ˆ๋‹ค.
ex ) commitAndReleaseBuffer: invalid argument (invalid character)

 

stack ์„ค์น˜๊ฒฝ๋กœ์— ํ•œ๊ธ€ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์—†์• ์ฃผ์‹œ๊ณ 

์ฝ˜์†”์ฐฝ์— ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ณ์„œ ๋ฌธ์ž์—ด ์ธ์ฝ”๋”ฉ์„ ๋ฐ”๊พธ๊ณ  ๋‹ค์‹œ ์„ค์น˜ํ•ด์ฃผ์„ธ์š”.

chcp 65001

* [๋”๋ณด๊ธฐ] ์ฝ˜์†”์ฐฝ์—์„œ stack ์‹คํ–‰์ด ์•ˆ๋œ๋‹ค๋ฉด

๋”๋ณด๊ธฐ

์œˆ๋„์šฐ ์ธ์Šคํ†จ๋Ÿฌ๋กœ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ์„ค์ •๋˜์–ด์žˆ์„๊ฑด๋ฐ, stack.exe๋ฅผ ๋ชป์ฐพ๋Š”๋‹ค๋ฉด ์„ค์น˜๊ฒฝ๋กœ๋กœ ๋“ค์–ด๊ฐ€์„œ ์ง์ ‘ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด cd๋กœ ์ง์ ‘ stack.exe ์œ„์น˜๋ฅผ ์ฐพ์•„์„œ ์‹คํ–‰์‹œ์ผœ๋„ ๋ฉ๋‹ˆ๋‹ค.


# 3-3 IntelliJ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐ ์„ค์ •

** ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ํ•œ๊ธ€์ด๋‚˜ ๋„์›Œ์“ฐ๊ธฐ๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ์œผ๋ฉด ๋นŒ๋“œ๊ฐ€ ์•ˆ๋ฉ๋‹ˆ๋‹ค.

(~~library ์ด๋ฆ„~~:: invalid argument (invalid character)), ์˜ค๋ฅ˜ ์„ค๋ช… ๊ทธ๋Œ€๋กœ, ์ด๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ Stack ์ž์ฒด ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ฝ์„ ์ˆ˜ ์—†๋Š” ๊ธ€์ž๊ฐ€ ์žˆ์–ด ๋นŒ๋“œ์— ์‹คํŒจํ–ˆ๋‹ค๋Š” ์˜๋ฏธ๋‹ˆ๊นŒ ๋‹นํ™ฉํ•˜์ง€๋ง๊ณ  ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ์— ๋„์›Œ์“ฐ๊ธฐ๋‚˜ ํ•œ๊ธ€ ๊ฒฝ๋กœ๋ฅผ ์—†์• ์ฃผ์„ธ์š”

 

IntelliJ - Plugins ์— ๋“ค์–ด๊ฐ€์„œ ์•„๋ž˜ 2๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด์ค์‹œ๋‹ค.

์ฐธ๊ณ ๋กœ HaskForce๋„ ํ•˜์Šค์ผˆ ๋นŒ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ธ๋ฐ, ์šฐ๋ฆฌ๋Š” Intellij-Haskell์„ ์‚ฌ์šฉํ• ๊ฑฐ๋ผ ๊ฐ™์ด ์„ค์น˜ํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์˜ต์…˜์— 'Haskell' ์ด ์ƒ๊ธด๋‹ค.


๊ทธ๋ฆฌ๊ณ  ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์„ ๋ˆ„๋ฅด๋ฉด SDK ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•˜๋Š”๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ์„ค์น˜ํ•œ stack.exe์˜ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

[๋”๋ณด๊ธฐ] ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์˜ค๋ฅ˜ - ์ธํ…”๋ฆฌ์ œ์ด 2020 ์ตœ์‹ ๋ฒ„์ „

( Error adding module to project couldn't create haskell module... )

๋”๋ณด๊ธฐ

์ธํ…”๋ฆฌ์ œ์ด ์ตœ์‹ ๋ฒ„์ „ (2020)์—์„œ ์ฃผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

IntelliJ ์—์„œ stack์„ ์ด์šฉํ•œ ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ํด๋”๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•ด์„œ ๋‚˜์˜ค๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. 

์ด๋Ÿด๋•Œ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์ƒ์„ฑํ•˜์ง€๋ง๊ณ 

 

์ฝ˜์†”์ฐฝ์„ ์—ด์–ด stack์œผ๋กœ ์ง์ ‘ ์ƒ์„ฑํ•ด์ฃผ๊ณ  ์ง์ ‘ ํ”„๋กœ์ ํŠธ๋ฅผ Open์œผ๋กœ ์—ด์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

>> stack new ํ”„๋กœ์ ํŠธ์ด๋ฆ„

์œผ๋กœ ์ง์ ‘ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑ ํ•œ ํ›„, ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ฅผ IntelliJ - Open Project์œผ๋กœ ์—ด์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ ๋‹ค์Œ์— Project SDK๋ฅผ stack.exe๋ฅผ ์ฐพ์•„์„œ ์„ ํƒํ•ด์ฃผ๋ฉด ์ž˜ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”์ฐฝ์„ ์—ด์–ด [ stack new ์ด๋ฆ„ ] ์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , IntelliJ์— ๋“ค์–ด์™€ Openํ•ด์ค๋‹ˆ๋‹ค.
๊ทธ ๋’ค์— Import Project ์ฐฝ์ด ๋‚˜์˜ค๋ฉด, ์•„๋ž˜์— ์žˆ๋Š” Haskell Stack์„ ์„ ํƒํ•ด์ฃผ๊ณ 
์ฒ˜์Œ๊ณผ ๋˜‘๊ฐ™์ด stack.exe์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์•„๋ž˜์™€ ๊ฐ™์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ์„ฑ๊ณต. Main.hs (ํ•˜์Šค์ผˆ ํŒŒ์ผ์˜ ์ฒซ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž ํ•„์ˆ˜)๋Š” app ํด๋”์•ˆ์— ์žˆ์Šต๋‹ˆ๋‹ค.


ํ”„๋กœ์ ํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋ฉด, ์„ค์ •์— ๋“ค์–ด๊ฐ€์„œ ์ปดํŒŒ์ผ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ Main.hs์— ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰์‹œ์ผœ๋ด…์‹œ๋‹ค.

-- (์ด ๊ธฐํ˜ธ๋Š” ์ฃผ์„์ž…๋‹ˆ๋‹ค.)
-- stack ghci ๋กœ ์ฝ˜์†”์ฐฝ ์‹คํ–‰๋„ ๊ฐ€๋Šฅํ•ด์š”.
-- :: stack ghci
-- :: main

import System.IO
main = putStrLn "Hello, World!"

Edit Configurations์„ ๋ˆŒ๋Ÿฌ ํ•˜์Šค์ผˆ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์„ค์ •ํ•ด์ค์‹œ๋‹ค.
+ ๊ธฐํ˜ธ๋ฅผ ๋ˆŒ๋Ÿฌ Haskell Stack Runner๋ฅผ ๋“ฑ๋กํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ๋ณ„๋ช…์€ ๋ณธ์ธ์ด ์›ํ•˜๋Š”๊ฑธ๋กœ.

[๋”๋ณด๊ธฐ] Run์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Œ.

๋”๋ณด๊ธฐ

์•„๋ž˜์™€ ๊ฐ™์ด ์ง์ ‘ SDK๋ฅผ ์„ค์ •ํ•˜๊ณ  IntelliJ๋ฅผ ๊ป๋‹ค๊ฐ€ ์ƒˆ๋กœ์ผœ์ฃผ์ž.

์ด๋ ‡๊ฒŒ ์‚ฌ๋žŒ ๋šœ๊ป‘์—ด๋ฆฌ๊ฒŒ ์‹คํ–‰์ด ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
๊ทธ๋Ÿด๋• ๋‹นํ™ฉํ•˜์ง€๋ง๊ณ  File - Project Structure์— ๋“ค์–ด๊ฐ€ +๋ฅผ ๋ˆŒ๋Ÿฌ ์ง์ ‘ Haskell SDK๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์ž (Stack Runner)

ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œ์ผœ Hello World!๋ฅผ ์ถœ๋ ฅ์‹œํ‚ค๋ฉด, ์„ฑ๊ณต!

์ฐธ๊ณ ๋กœ ์‹คํ–‰์ดํ›„์— ์ž๋™์œผ๋กœ ๊ฐ์ข… ํ•˜์Šค์ผˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค๊ณผ hoogle (Haskell API search engine) ์ด ์„ค์น˜๋ ํ…๋ฐ, ์ด๊ฒŒ ์šฉ๋Ÿ‰์ด ์ปค์„œ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฐ๋‹ค.

๊ทธ๋ƒฅ IntelliJ๋ฅผ ์ผœ๋†“๊ณ  ๋”ด์ง“ํ•˜์ž.

 

# 3-4 IntelliJ ์‚ฌ์šฉ์‹œ ์ฃผ์˜์‚ฌํ•ญ

์ฐธ๊ณ ๋กœ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ํ•˜์Šค์ผˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ์„ค์ •์ด ๋กœ๊ทธ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋„๋ก ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ•˜์Šค์ผˆ ๊ฐœ๋ฐœ์„ ํ•ด์•ผํ•˜๋ฏ€๋กœ, File - Setting- ... ์— ๋“ค์–ด๊ฐ€์„œ Haskell log๋ฅผ ๋ณด์ด๋„๋ก ์ฒดํฌํ•ด์ค์‹œ๋‹ค.

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ