for 文と map 関数の関係が見えてきたので、手続き型プログラム風にリストのデータの基本統計の分散量を求めるプログラムを書いてみた。 variance :: [Float] -> Float variance xs = let n = fromIntegral $ length xs mean = (sum xs) / n var = (sum $ map (\x -> (x-mean)*(x-mean)) xs) / n in var map 関数や sum 関数が for ループを表していると考えて良い。発想的にも手続き型プログラムとそう変わったものでもないが、for ループが隠蔽されているぶんスッキリしているように見える。変数への代入(束縛)も手続き型言語風といってもいいくらいわかりやすいプログラムになった。 手続き型プログラムと Haskell の距離はそう遠くないのかもしれない。 実行例は次のようになった。 *Main> variance [1.2, 2.5, 3.4]
0.8155556
by tnomura9
| 2018-10-25 22:41
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||