morioXのCraftお勉強日記 RSSフィード

2007-06-13

[] Data types: tuples and lists (13日目)  Data types: tuples and lists (13日目) - morioXのCraftお勉強日記 を含むブックマーク

Exercises 5.26

フィボナッチ数を表っぽく表示する関数 fibTable を定義する。まずその前に、フィボナッチ数 fib の定義を先に書いておく。

fib :: Int -> Int

fib n

 | n == 0 = 0

 | n == 1 = 1

 | n > 1 = fib (n - 2) + fib (n - 1)

この他にも、以前のExercisesで定義した duplicate, pushRightNumを使って、fibTableを定義する。

fibTable :: Int -> String

fibTable n

 | n == (-1) = (duplicate " " 9) ++ "n" ++ (duplicate " " 6) ++ "fib n"

 | otherwise = fibTable (n - 1) ++ "\n" ++ (pushRightNum 10 $ show n) ++ " " ++ (pushRightNum 10 $ show $ fib n)

Exercises 5.27

この章で出てきたデータベースアクセス関数を見やすい出力になるよう定義しなさい、という問題。books 関数の定義をいじってみることにする。

まず、元ネタの books 関数を示す。

books :: Database -> Person -> [Book]

books dBase findPerson

 = [ book | (person, book) <- dBase, person == findPerson ]

定義する関数を formattedBooks とする。

formattedBooks :: [Book] -> Person -> String

formattedBooks bks findPerson

 | length bks == 0 = findPerson ++ " borrows nothing."

 | length bks == 1 = findPerson ++ " borrows "++ head bks

 | otherwise = (formattedBooks (tail bks) findPerson) ++ " and " ++ head bks

いまいち綺麗にならなかったかも。


Summary

リストとタプルに関する基本的な話題が中心だった。


今後の学習

残Section数 90, 残Exercise数 368

BarbaraBarbara2012/07/24 05:27Finding this post has answered my peryars

lgbmlzlgbmlz2012/07/25 01:50ytCi8x <a href="http://ahsuszkcbmrj.com/">ahsuszkcbmrj</a>

jdxkaqjdxkaq2012/07/26 18:39JXcHg6 <a href="http://orvmhquzzxav.com/">orvmhquzzxav</a>