Concurrent Clean : ファイル出力演算子

[id:lethevert:20061213:p1]のころ考えていたやつ。
たしか、一意型とそうでないもので同じ演算子を使えないことが分かったので、結局 (|>*) にしたけれど。

helloworld f = f |>* "Hello" |>* " " |>* "World" |>* "!" |>* newline

(|>>)というのもありだな。一意型と非一意型の区別をどうするかというのはあるけれど。

helloworld f = f |>> "Hello" |>> " " |>> "World" |>> "!" |>> newline
      • -

要は、appendと同じなんだよね。

f list = list |>> 1 |>> 2 |>> 3 |>> 4

f list = list ++ [1] ++ [2] ++ [3] ++ [4]

という。ただ、一意型でないけれど。

      • -

こういうのは?

helloworld f = f <| "Hello" <| " " <| "World" <| "!" <| newline
helloworld f = f <* "Hello" <* " " <* "World" <* "!" <* newline
helloworld f = f <+ "Hello" <+ " " <+ "World" <+ "!" <+ newline

ああ、これは、Parserライブラリとかぶりそうだな