2013年12月15日日曜日

開発環境

C実践プログラミング 第3版 (Steve Oualline (著)、 望月 康司 (監訳) (翻訳)、谷口 功 (翻訳)、オライリー・ジャパン)のⅢ部(高度なプログラミング概念)の17章(高度なポインタ)、17.3(リンクリスト)、設問 17-1をHaskellで解いてみる。

その他参考書籍

設問 17-1.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

main :: IO ()
main = mapM_ putStrLn $ map (\lang -> if findName linkedList lang then
                                          lang ++ ": 発見!"
                                      else
                                          lang ++ ": 見つからなかった")
                            langs

data LinkedList = Empty | LinkedList LinkedList String deriving (Show)

findName :: LinkedList -> String -> Bool
findName Empty _ = False
findName (LinkedList ls s) name = if s == name then
                                      True
                                  else
                                      findName ls name

linkedList :: LinkedList
linkedList = LinkedList (LinkedList Empty "haskell") "python"

langs :: [String]
langs = ["python", "haskell", "dart", "scheme"]

入出力結果(Terminal, runghc)

$ runghc Sample.hs
python: 発見!
haskell: 発見!
dart: 見つからなかった
scheme: 見つからなかった
$

慣れるまでは{-# OPTIONS -Wall -Werror #-}の記述を消さずに細かく型を指定していくことに。

0 コメント:

コメントを投稿