記号・・・

List.map (Float.to_int << ( ** ) 2.0 << Float.of_int) [0..10];;
[ for x in 0..10 -> 2.0 ** (Float.of_int x) |> Float.to_int ];;
http://d.hatena.ne.jp/Nobuhisa/20080707/1215424638#c1215441149


いげ太さんに教えてもらったコードに見慣れない記号が含まれていたので、色々試してみて解析!
関係ないけど、演算子とかって非常にぐぐりづらいですよね。。
さて、まずは

  • <<, >> (関数合成)

インタプリタで試していて、関数合成っぽいな〜と思ってぐぐってみたらいげ太さんの日記に漂着しました。笑

> let a = ( * ) 2 << ( + ) 1;;
val a : (int -> int)

> a 99;;
val it : int = 200

> let b = ( * ) 2 >> ( + ) 1;;
val b : (int -> int)

> b 5;;
val it : int = 11
  • |>, <| (パイプライン)

これは比較的すぐ分かりました。

> 99 |> ( + ) 1 |> ( * ) 3;;
val it : int = 300

> [1..10] |> List.map (( * ) 2);;
val it : int list = [2; 4; 6; 8; 10; 12; 14; 16; 18; 20]

これも逆があるみたい

> ( + ) 1 <| 99;;
val it : int = 100

今日はちょっとこの辺で・・・(現実逃避終了