Commits

camlspotter  committed 0ca1414

update

  • Participants
  • Parent commits 712ac5d

Comments (0)

Files changed (1)

File random_memo.rst

 
 ``xs @ [x]`` は ``xs`` の長さに比例した時間がかかる。これを再帰やループの中で
 状態リストを長くしていく操作として使っているならお前はもう死んでいる。
-``x :: xs`` と ``l @ [xs]`` の違いは初心者が思っているより深刻だ。
+``x :: xs`` と ``xs @ [x]`` の違いは初心者が思っているより深刻だ。
 
 どうしてもリストの後ろに要素を一つ一つ足したいという場合は再帰やループ中では
 その逆リストを保持し、 ``x :: rev_xs`` として更新していく。最後に ``List.rev rev_xs`` だ。
     ``&`` は使わないので使ってしまって良い。
     ``|>`` と同じくパフォーマンスのために "%apply" を使う::
 
-        external (&) : 'a -> ('a -> 'b) -> 'b = "%apply"
+        external (&) : ('a -> 'b) -> 'a -> 'b = "%apply"
 
     残念ながら ``|>`` は ``&`` より強いので ``f & g x |> h`` は ``f & (g x |> h)`` とパースされてしまう。
     見た目的には ``|>`` の方が分断感あるので ``(f & g x) |> h`` となって欲しいところ。
     このためかどうか、 ITPL な人は ``|>`` の代わりに ``@@`` を使っているが、
     今度は、 ``>>=`` との強さ関係が (Haskell の ``$`` と ``>>=`` とは)逆になる。痛し痒しである。
     まあ、 ``(f & g x) |> h`` は ``g x |> f |> h`` と書けば問題ない。
-    Jane Street は ``%apply`` として ``|!`` を使っている。
 
 Functional composition
     関数合成 (Haskell の ``.``) は右結合でかなり強くなければいけない。 ``**`` を