5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

純粋関数型言語Concurent Clean

1 :デフォルトの名無しさん:04/02/01 18:55

純粋関数型言語Cleanに関するスレッドです。
関数型には珍しくIDEと、IO,Gameライブラリが標準でついてきます。


関連リンク
本家
http://www.cs.kun.nl/~clean/
日本語ドキュメントなど
http://sky.zero.ad.jp/~zaa54437/programming/clean/

212 :デフォルトの名無しさん:2005/12/15(木) 20:45:16
LISPスレにIO関係の簡単なプログラムの例みたいなのがあったので
ちょっと変形してでもいいから Cleanで書いてみたんですが…適当過ぎました。
目標は以下の通り (Haskellはあまり良くはわかってません)
・モナドの持ち上げ(ここがわかってない)が必要そうな場所でも コンビネータで繋げられる
・ m >>= (\ v -> f v) のようにλを明示的に書かない(無駄を省く & LISPより簡潔に)
僕が書いた >>188 readFile と HaskellのreadFileは違うのでご注意。

>>209-211
ありがとうございます。
compileすらできなかったので助かりマックス。
Haskellなら超簡単に書けますね。

import Data.Char
import System.Environment
main = getArgs >>= mapM_ (\ fname -> readFile fname >>= putStr . map toLower)
infixr 6 >>>=
(>>>=) p1 p2 = \x -> p1 x >>= p2
--main = getArgs >>= mapM_ (readFile >>>= putStr . map toLower)


213 :デフォルトの名無しさん:2005/12/17(土) 01:05:21
個人的な意見だけど、確かに陽に無名関数を使わない方が簡潔になる場合も多
いが、しかし、あるものを使わないのは馬鹿げていると思う。

ところでこの mapM_ の引数だと、
((>>= putStr . map toLower) . readFile)
と書ける。
その方が綺麗だと思うかどうかは人によると思うが、個人的にはどちらにせよ
新しい演算子を作るほどではない気がする。


214 :デフォルトの名無しさん:2005/12/17(土) 16:28:11
>>213
確かにそうですね。
中間演算子が便利そうだったので何も考えずに使った感はあります。
1. 手続き的にプログラムをしたい場合には素直にdoを使う。 (無駄が多いように見える)
2. 関数型で無駄を省きたいなら >>213のように書く
3. 1で無駄を省くなら (a 匿名関数を用いる) か (b 新しい演算子を用いる)。
自分一人なら3.bで書くのも悪いかもしれませんが、そうでなければ2又は3.a番が妥当かもしれません。
また、2で書けるのに3.bで書くとコンパイルに通すのが目的になって無駄が生じる可能性があるとも思いました。

あと、こんなのを見つけました
ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=%3E%3E%3D+%A4%C7%B7%D2%A4%B4%A4%A6%A5%D1%A5%A4%A5%D7%A5%E9%A5%A4%A5%F3


90 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)