2013年11月12日火曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の7章(反復)、7.7(練習問題)、1をHaskellで解いてみる。

その他参考書籍

7.7(練習問題)、1.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}
-- Haskellは参照透過性をもつので、リストを変更できない。なので新しいリストを返す関数を定義

main :: IO ()
main = do
    let ns = [1..5] :: [Int]
    putStrLn $ show ns
    putStrLn $ show $ doublePreceding ns

doublePreceding :: (Num a) => [a] -> [a]
doublePreceding [] = []
doublePreceding ns = 0:(map (2*) $ init ns)

入出力結果(Terminal, runghc)

$ runghc Sample.hs
[1,2,3,4,5]
[0,2,4,6,8]
$

{-# OPTIONS -Wall -Werror #-}を記述してるから、細かく型を指定(:: Double)しないと警告がいっぱい出た。慣れるまでは{-# OPTIONS -Wall -Werror #-}の記述を消さずに細かく型を指定していくことに。

0 コメント:

コメントを投稿