2013年11月1日金曜日

開発環境

初めてのコンピュータサイエンス(Jennifer CampbellPaul GriesJason MontojoGreg Wilson(著)長尾 高弘(翻訳))の4章(モジュール)、4.8(練習問題)、3を解いてみる。をHaskellで解いてみる。

その他参考書籍

4.8(練習問題)、3.

コード(BBEdit)

Sample.hs

{-# OPTIONS -Wall -Werror #-}

import qualified Data.Char as Char
import qualified Data.List as List

main :: IO ()
main = do
    let a = "boolean"
    putStrLn $ a ++ " 大文字化 " ++ map Char.toUpper a
    let b = "CO2 H2O"
        c = List.findIndices (=='2') b
    putStrLn $ b ++ " で最初に\'2\'が現れる位置 " ++ show (c !! 0)
    putStrLn $ b ++ " で2度目に\'2\'が現れる位置 " ++ show (c !! 1)
    let d = "Boolean"
    putStrLn $ d ++ " の先頭文字が大文字かどうか " ++
               show (let e = head d in e == Char.toLower e)
    let f = "MoNDaY"
        g = map Char.toLower f
        h = (Char.toUpper . head $ g):tail g
    putStrLn $ d ++ " を全て小文字に変換 " ++ g ++
          " 先頭文字だけを大文字に変換 " ++ h
    let i = " Monday"
        j = drop (length $ takeWhile (==' ') i) i
    putStrLn $ "\"# " ++ i ++ "\" 先頭の空白を削除 \"#" ++ j ++ "\""

入出力結果(Terminal, runghc)

$ runghc Sample.hs
boolean 大文字化 BOOLEAN
CO2 H2O で最初に'2'が現れる位置 2
CO2 H2O で2度目に'2'が現れる位置 5
Boolean の先頭文字が大文字かどうか False
Boolean を全て小文字に変換 monday 先頭文字だけを大文字に変換 Monday
"#  Monday" 先頭の空白を削除 "#Monday"
$

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

0 コメント:

コメントを投稿