2007-08-21から1日間の記事一覧

Concurrent Clean : ++を型クラスで置き換えてみたら・・・

++がリスト型専用の演算になっているので、型クラスで置き換えたライブラリを作ってみている。 class (++) infixr 5 q a :: !(q a) (q a) -> q a という宣言にすると、リストの++を行うのに型コンテキストが必要になってしまった。 class (++) infixr 5 q ::…

Concurrent Clean: +, ++, +++

++が第2引数がnon-strictな連結なら、第2引数がstrictな連結は・・・ +++は文字列専用にしたので、一般の連結に使えるものは、と思ったら、一番一般的なものを見落としていた。+が同じ型を持っている。 でも、+を使うなら、これを文字列専用にして、+++を…

Concurrent Clean: % (スライス)

同じことが % (スライス) にも言えるわけで。 文字列専用の演算と一般のスライスを別の識別子に分けておかないと、配列のスライスが作れない。 - あるいは、要素の型を区別するように書き直すか。

Concurrent Clean : 型クラスの悩み

いろいろな操作を型クラスで統合して、さまざまなコンテナを同じ操作で扱えるようにしてみたら、いままで単純に扱えていた操作が型コンテキストを必要とするようになって、逆に面倒になってしまったという罠。 もっとも、リスト操作でもっとも重要な length,…