2017年2月14日火曜日

開発環境

関数プログラミング入門(Richard Bird (著)、山下伸夫 (翻訳)、オーム社)の第2章(単純なデータ型)、2.6(型シノニム)、練習問題2.6.1、2.6.2を取り組んでみる。

練習問題2.6.1、2.6.2

コード(Emacs)

-- 2.6.1
type Distance = Double
-- 相当性検査演算(==)を定義出来ない。((==)は Double の相当性演算)

-- 2.6.2
data Jane = MkJane Int
newtype Dick = MkDick Int

f :: Jane -> Bool
f (MkJane n) = True

g :: Dick -> Bool
g (MkDick n) = True

-- n が undefined の場合、MkDick は正格な構成子なので 関数gはエラーになる。

入出力結果(Terminal, ghci)

$ ghci sample6.hs
GHCi, version 8.0.2: http://www.haskell.org/ghc/  :? for help
[1 of 1] Compiling Main             ( sample6.hs, interpreted )
Ok, modules loaded: Main.
*Main> f undefined
*** Exception: Prelude.undefined
CallStack (from HasCallStack):
  error, called at libraries/base/GHC/Err.hs:79:14 in base:GHC.Err
  undefined, called at <interactive>:1:3 in interactive:Ghci1
*Main> g undefined
True
*Main> :q
Leaving GHCi.
$

0 コメント:

コメントを投稿