Mercurial > hg > Members > toma > osc2013
changeset 7:eea79db7cd9e
add record
author | Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 06 Jul 2013 11:53:05 +0900 |
parents | e9af42a3707b |
children | 3ee3f33bc368 |
files | haskell.html prog/record.hs |
diffstat | 2 files changed, 74 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/haskell.html Sat Jul 06 11:07:49 2013 +0900 +++ b/haskell.html Sat Jul 06 11:53:05 2013 +0900 @@ -63,8 +63,8 @@ </h3> <p> <ul> - <li>RubyやPythonなどのインタプリタ言語と比較して高速である - <li>高水準言語で、CやC++、Javaよりも自分の足を撃ち抜きにくい + <li>RubyやPythonなどのインタプリタ言語と比較して高速です + <li>高水準言語で、CやC++、Javaよりも自分の足を撃ち抜きにくいです </ul> </p> </article> @@ -102,7 +102,7 @@ Haskell は副作用を持ちません。 </p> <p> - 変数を書き換えることはできません。 + つまり、変数を書き換えることはできないということです。 </p> <p> 関数は同じ引数で呼ばれた場合、同じ値を返すことを保証します。 @@ -264,6 +264,9 @@ <h3> 簡単なプログラム </h3> + <p> + <a href="https://gist.github.com/amothic/5938383">hello.hs</a> + </p> <pre> {-# LANGUAGE OverloadedStrings #-} import Network.Wai @@ -303,7 +306,7 @@ ghci> :module +Network.Wai.Handler.Warp </pre> <p> - 型を教えて貰うには、:t コマンドに続けて正しい式を入力します。 + 型を教えて貰うには、:t コマンドに続けて式を入力します。 </p> <pre> ghci> :t run @@ -442,8 +445,11 @@ <article class="smaller"> <h3> - Hello.hs + Hello Worldと出力するプログラム </h3> + <p> + <a href="https://gist.github.com/amothic/5938383">hello.hs</a> + </p> <pre> {-# LANGUAGE OverloadedStrings #-} import Network.Wai @@ -534,7 +540,7 @@ <article class="smaller"> <h3> - 作成するプログラム全容 + アクセスしてきたURLで、出力結果を変えるプログラム </h3> <p> <a href="https://gist.github.com/amothic/5933808">routes.hs</a> @@ -590,6 +596,39 @@ </p> </article> + <article class="smaller"> + <h3> + レコード構文 + </h3> +<pre> +-- レコード構文を使わない場合 +data Person = Person String String Int Float String String + deriving (Show) + +firstName :: Person -> String +firstName (Person firstname _ _ _ _ _) = firstname +lastName :: Person -> String +lastName (Person _ lastname _ _ _ _) = lastname +age :: Person -> Int +age (Person _ _ age _ _ _) = age +height :: Person -> Float +height (Person _ _ _ height _ _) = height +phoneNumber :: Person -> String +phoneNumber (Person _ _ _ _ number _) = number +flavor :: Person -> String +flavor (Person _ _ _ _ _ flavor) = flavor + +-- レコード構文 +data Person = Person { firstName :: String + , lastName :: String + , age::Int + , height :: Float + , phoneNumber :: String + , flavor :: String } deriving (Show) +</pre> + </p> + </article> + <article> <h3> pathによって返す関数を変えてみよう
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/prog/record.hs Sat Jul 06 11:53:05 2013 +0900 @@ -0,0 +1,29 @@ +-- レコード構文を使わない場合 +data Person = Person String String Int Float String String + deriving (Show) + +firstName :: Person -> String +firstName (Person firstname _ _ _ _ _) = firstname + +lastName :: Person -> String +lastName (Person _ lastname _ _ _ _) = lastname + +age :: Person -> Int +age (Person _ _ age _ _ _) = age + +height :: Person -> Float +height (Person _ _ _ height _ _) = height + +phoneNumber :: Person -> String +phoneNumber (Person _ _ _ _ number _) = number + +flavor :: Person -> String +flavor (Person _ _ _ _ _ flavor) = flavor + +-- レコード構文 +data Person = Person { firstName :: String + , lastName :: String + , age::Int + , height :: Float + , phoneNumber :: String + , flavor :: String } deriving (Show)