Concurrent Clean : ファイル入出力
今朝はMLに思いつきでどうでもいいメールを投げてしまいましたが、あのあと、もっと便利なやり方を思いつきました。
class << a where (<<) infixl 0 :: *File a -> *File instance << {#Char} where (<<) f s = fwrites s f instance << Int where (<<) f i = fwritei i f
みたいに定義すれば、
printStringAndInt str1 num2 str3 f # f = f << str1 << num2 << str3 ...
と書けるはず。
・・・なんかC++みたいだな。
ちなみに、文字列リストは、このように。
printStringList lst f # f = foldl (<<) f lst ...
-
-
- -
-
っと、MLに返事がきていた。なになに・・・
・・・全く同じ演算子がStdFileに定義されてるじゃん _| ̄|○
class (<<<) infixl a :: !*File !a -> *File /* Overloaded write to file */ instance <<< Int instance <<< Char instance <<< {#Char} instance <<< Real
あれ、これ、でも、演算子の優先順位が書いてないぞ?