Hatena::ブログ(Diary)

趣味的にっき このページをアンテナに追加 RSSフィード

2007-08-21

今月28日は皆既月食 21:50 今月28日は皆既月食を含むブックマーク 今月28日は皆既月食のブックマークコメント

みたいです。会社の帰りに夜空を見上げようと思います。んー、晴れるかな。

参照:

満月の夕」の歌詞とコード22:05 「満月の夕」の歌詞とコード譜を含むブックマーク 「満月の夕」の歌詞とコード譜のブックマークコメント

この間「木の実」で打ち上げの時に歌っていた曲です。

昔から、歌は時代に合わせて形を変えながら、歌い継がれてきたんだから。あのー、僭越ですけど、ここにコードも載せておくんで、歌いたい人はおおいに歌って下さい。それが一番嬉しい。

from: 404 Not Found

とのことですので、リンクをはらせていただきます。歌詞コード譜。んー、この歌僕も好き。

そういえば、皆既月食の日は必ず満月みたいですね。震災の日も満月だったそうです。。。

[] 複数引数関数合成 21:34  複数引数の関数合成を含むブックマーク  複数引数の関数合成のブックマークコメント

引数がふたつの場合、関数合成は(f .) . gになります。みっつの場合は、((f .) .) . gです。引数がひとつ増えるごとにかっこと.が増えていきます。Haskellの定石のひとつです。

んで、これって直感的に分かりにくいですよね。ということでオレオレ演算子を定義してみました。こんな感じ。お、意外と見やすいかもです。

module Main (main) where

(<.>) :: (b -> c) -> (a -> b) -> a -> c
(<.>) f g = f . g

(<..>) :: (b -> c) -> (a1 -> a2 -> b) -> a1 -> a2 -> c
(<..>) f g = (f .) . g

(<...>) :: (b -> c) -> (a1 -> a2 -> a3 -> b) -> a1 -> a2 -> a3 -> c
(<...>) f g = ((f .) .) . g

foo1 a1       = a1
foo2 a1 a2    = a1 + a2
foo3 a1 a2 a3 = a1 + a2 + a3

main :: IO ()
main = do
  print $ (succ <.>   foo1) 1     -- => 2
  print $ (succ <..>  foo2) 1 2   -- => 4
  print $ (succ <...> foo3) 1 2 3 -- => 7

[] 21:34 を含むブックマーク のブックマークコメント

19:00ごろ帰りました。