学生の備忘録なブログ

日々のことを忘れないためのブログです。一日一成果物も目標。技術系はQiitaにあげるように変更しました。

Haskell ~入出力~

入出力

コード

main = do
  out <- getLine -- input: out
  putStrLn (out ++ "は大事") 
% stack build;stack exec project1-exe 
project1-0.1.0.0: unregistering (local file changes: src/Lib.hs)
project1-0.1.0.0: build (lib + exe)
Preprocessing library project1-0.1.0.0...
[1 of 1] Compiling Lib              ( src/Lib.hs, .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/Lib.o )
Preprocessing executable 'project1-exe' for project1-0.1.0.0...
[1 of 1] Compiling Main             ( app/Main.hs, .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/project1-exe/project1-exe-tmp/Main.o ) [Lib changed]
Linking .stack-work/dist/x86_64-osx/Cabal-1.24.2.0/build/project1-exe/project1-exe ...
project1-0.1.0.0: copy/register
Installing library in
/.stack-work/install/x86_64-osx/lts-8.11/8.0.2/lib/x86_64-osx-ghc-8.0.2/project1-0.1.0.0-AckhfDVtQB568iPvGBSrt7
Installing executable(s) in
/.stack-work/install/x86_64-osx/lts-8.11/8.0.2/bin
Registering project1-0.1.0.0...

% stack exec project1-exe
hellowordl
hellowordlは大事

do式

コードのレイアウト

 do式の複数の式を束ねる構文である.Javaのブロック構文に相当する.

 do式のように複数の式を束ねる構文では,複数の式のインデントを揃えることが属するブロックを表す.

 この規則を,レイアウト,またはオフサイドルールという.

do式と遅延評価

 Haskellの特徴は遅延評価である.よって,命令型のプログラム言語のように上から順に実行されるわけではない.do式を使うと,上から処理されていく.

参考

ふつうのHaskell

Amazon CAPTCHA

ここの記事が小さく良くまとまって書いてある. Haskellで競技プログラミング IO編 - Qiita