プログラミング + アカデミック + 何か面白いこと。 記載されているものは基本的に私が所属する団体とは関係がありません。

  1. プログラミング
  2. 0 view

[Haskell]バナナスプリット則 part1

Pocket

やりたいこと

以下のバナナスプリット則の例を実装したい。

・(|f|),(|g|)・=(|・f”F(π1),g”F(π2)・|)

スクリプト

Haskellでfoldrの結果をタプルで出力させるための文法が分からなくて、
Google先生も教えてくれなかったので今日は断念した。

あとは、以下のAfterの部分を1つのfoldrにまとめることができればバナナストリップ則の具体例の実装が出来る。

-- Before
sum' = foldr (\x xs -> x + xs) 0
length' = foldr (\x n -> 1 + n) 0
average ls = sum' ls / length' ls

-- After
average' ls = s / l
    where
        (s, l) = ((foldr (\x xs -> x + xs) 0) ls, (foldr (\x n -> 1 + n) 0) ls)

実行結果

途中経過だけど実行してみる。

$ghci
Prelude> :load banana-strip.hs
Main> average' [1,2,3,4,5]
3.0
Pocket

プログラミングの最近記事

  1. sbt1.0.0のインストールとサンプル実行

  2. [機械学習]各種Pythonライブラリ入りの実験用Dockerイメージを作った

  3. [Node.js]バッチスクリプトの書き方

  4. [Play][Scala]PlayFrameworkでリクエスト駆動のバッチを作る

  5. [OpenCV][Ruby]Webページのデザイン崩れ確認の自動化

関連記事

PAGE TOP