理想未来ってなんやねん

娘可愛い。お父さん頑張る。

Haskell 7日目

Haskell 7日目。
基本的な値に進みます。

Haskellの型

真偽値 Bool型
数値 Int型、Integer型、Float型、Double型
文字 Char型
文字列 String型=[Char]
タプル (a,b)
ユニット ()
リスト [a]

この他に重要な値として『関数』がありますが、8章で出てくるらしいです。

真偽値(Bool型)

Haskellの真偽値はTrueかFalseで、型はBool型となります。

Bool型の関数
関数 機能
not TrueであればFalse、FalseであればTrueを返す
(&&) 両方Trueの時にTrueを返す。
(||) いずれかがTrueの時にTrueを返す。

数値型(Int型、Integer型、Float型、Double型)

整数型

Haskellの整数型にあInt型とInteger型があります
Int型の範囲は処理系によって異なる。32ビットマシン上のGHCなら32ビットの符号付き整数となります。
Integer型は表現範囲に制限のない整数値を表現します。

整数の表記方法
進数 表記法法
10進表記 0〜9で記述 12345
8進表記 0oを前に付け、0〜7で記述 0o644
16進表記 0xを前に付け、0〜9、a〜fで記述 0o1f

上記のリテラルは数値型であることは決まっていますが、Int型にもInteger型にも、浮動小数点型にもなります。
数値リテラルの型を限定するには、

x = (16 :: Int)

の様に『::』構文を使って表現します。

浮動小数点数

Float型は単精度不動小数点数、Double型は倍精度浮動小数点数を表現します。

1.5
3.141592
77.38905609893065
0.1543e+2           --  0.1543 * 10^2 に相当
1543e-3             --  1543 * 10^-3 に相当
数値の演算

数値に関わる主な関数は下記の通りです。

使用例 意味
x+y xとy
x-y xとyの差
x^y xとyの積
x/y xとyの商(浮動小数点同士のみ)
x`div`y xとyの整除(整数同士のみ、負の無限大に向かってまるめる)
x`quot`y xとyの整除(整数同士のみ、ゼロに向かってまるめる)
x`mod`y (x`div`y)のあまり(整数同士のみ)
x`rem`y (x`quot`y)のあまり(整数同士のみ)
x^y xのy乗
-x xの符号反転(単項マイナス)
negate x xの符号反転(単項マイナスの別名)
subtract x y (y - x)と同じ
abs x xの絶対値
odd x xが奇数ならTrue、偶数ならFalse
even x xが偶数ならTrue、奇数ならFalse

2つの数値間で演算をするときは、2つの数値の型が同じでなければいけません。
違う型同士で演算を行いたい場合は、明示的に型を変換する必要があります。

整数型を他の方に変換する関数
使用例 意味
toInteger x Int型の値xをInteger型に変換
fromInteger x Integer型の値xを数値型に変換(返り値の型は文脈で決まる)
fromIntegral x Int型またはInteger型の値xを数値型に変換(返り値の型は文脈で決まる)
浮動小数点数型を整数型に変換する関数
使用例 意味
celling x xを下回らない最小の整数
floor x xを上回らない最大の整数
trancate x xと0の間でxに最も近い整数(x自身を含む)
round x xに最も近い整数(2つある場合は偶数)
その他の数値型

Haskellで用意されているその他の型が紹介されていますが、紹介にとどまっています。

ライブラリ
有理数 Rational型 Ratio
複素数 Complex型 Complex

詳しくはHaskellの仕様書である『Haskell 98 Language and Libraries The Revised Report』を参照してくださいとのことです。


今日のところはここまで。
明日は文字と文字列型にすすみます。