差分

ナビゲーションに移動 検索に移動

GHCi

2,764 バイト追加, 2013年11月12日 (火) 15:24
作成
'''GHCi'''とは、高性能な[[電卓]]ソフトウェアである。

==主な特徴==
* [[四則演算]]、[[累乗]]の計算ができる
* [[関数]]を定義し、計算できる
* [[ファイル]]から関数の定義を読み込み、計算できる
* 一度の計算指示で複数の値に対する計算結果を表示できる

==計算例==
===基本の四則計算===
見たまんまである。
<pre>Prelude&gt; 2*2+2/2
5.0</pre>
===累乗と剰余===
[[フェルマーの小定理]]の計算をしている。
<pre>Prelude&gt; (12345^65536) `mod` 65537
1
Prelude&gt; mod (77777^65536) 65537
1</pre>
===関数の定義===
非負[[整数]]の[[階乗]]を計算する関数を定義し、それを利用して計算している。
<pre>Prelude&gt; let fact n = if n<=1 then 1 else n*(fact (n-1))
Prelude&gt; fact 5
120
Prelude&gt; fact 13
6227020800</pre>
===一度の計算指示で複数の値に対する計算結果を表示する===
0以上63以下の整数Nについて、2のN乗を計算している。
<pre>Prelude&gt; map (\a -&gt; (a,2^a)) [0..63]
[(0,1),(1,2),(2,4),(3,8),(4,16),(5,32),(6,64),(7,128),(8,256),(9,512),(10,1024),
(11,2048),(12,4096),(13,8192),(14,16384),(15,32768),(16,65536),(17,131072),(18,2
62144),(19,524288),(20,1048576),(21,2097152),(22,4194304),(23,8388608),(24,16777
216),(25,33554432),(26,67108864),(27,134217728),(28,268435456),(29,536870912),(3
0,1073741824),(31,2147483648),(32,4294967296),(33,8589934592),(34,17179869184),(
35,34359738368),(36,68719476736),(37,137438953472),(38,274877906944),(39,5497558
13888),(40,1099511627776),(41,2199023255552),(42,4398046511104),(43,879609302220
8),(44,17592186044416),(45,35184372088832),(46,70368744177664),(47,1407374883553
28),(48,281474976710656),(49,562949953421312),(50,1125899906842624),(51,22517998
13685248),(52,4503599627370496),(53,9007199254740992),(54,18014398509481984),(55
,36028797018963968),(56,72057594037927936),(57,144115188075855872),(58,288230376
151711744),(59,576460752303423488),(60,1152921504606846976),(61,2305843009213693
952),(62,4611686018427387904),(63,9223372036854775808)]</pre>
===ファイルから関数を読み込む===
まず、以下の内容をcollatz.hsというファイルに保存する。
<pre>collatz n
| n<=1 = 0
| (mod n 2)==0 = 1+(collatz (div n 2))
| otherwise = 1+(collatz (succ (n*3)))
</pre>
次に、保存したcollatz.hsがある[[ディレクトリ]]が[[カレントディレクトリ]]になるようにGHCiを起動し、以下のように操作する。
<pre>Prelude&gt; :l collatz.hs
[1 of 1] Compiling Main ( collatz.hs, interpreted )
Ok, modules loaded: Main.
*Main&gt; collatz 2382487059571037193129
2284</pre>

==関連項目==
* [[電卓]]
* [[関数]]
* [[再帰]]
* [[bc]]
匿名利用者

案内メニュー