関数型プログラミング言語Haskell
■ このスレッドは過去ログ倉庫に格納されています
0001潜伏していた1
NGNG前スレ
http://pc.2ch.net/test/read.cgi/tech/996131288/l50
関連 >>2 以降
0002潜伏していた1
NGNGここがパート2です。鬱。
Haskellの公式HP
http://www.haskell.org
インタプリタHugs
http://www.haskell.org/hugs
日本語サイト
http://www.sampou.org/haskell
http://www.teu.ac.jp/kougi/koshida/Prog6/index.html
0003潜伏していた1
NGNG関数型言語Part2
http://pc.2ch.net/test/read.cgi/tech/1007387924/l50
関数型プログラミング言語ML
http://pc.2ch.net/test/read.cgi/tech/1012445015/l50
LISP Scheme Part3
http://pc.2ch.net/test/read.cgi/tech/1008220265/l50
0004潜伏していた1@このスレはパート2です
NGNGなぜ関数プログラミングは重要か
http://www.sampou.org/haskell/article/whyfp.html
普通のやつらの上を行け ---Beating the Averages---
http://www.shiro.dreamhost.com/scheme/trans/beating-the-averages-j.html
Why People Aren't Using Haskell
http://www.jelovic.com/articles/why_people_arent_using_haskell.htm
0005このスレはパート2です
NGNG0006デフォルトの名無しさん
NGNG一番下のやつってやる気起きるのか?
英語苦手なんでちゃんと読めてないのですが
とりあえず Haskell を勧めてはいないような…。
0007このスレはパート2です
NGNGなんで使ってくれないんだ? と訴えられると、
「よっしゃ一肌脱いだる」とか思うのは、俺だけですかねぇ。
#その割に未だ偉そうなプログラムは書けていませんが。
0008デフォルトの名無しさん
NGNGそんなに Haskell 側に立ってる感じでもないような。
0009age
NGNGdata A a = A a
f = id
g :: a -> a
g = A.f
h :: a -> A a
h = A .f
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG胴囲
どっちかというと、Haskell擁護者よ。
Haskellを普及させたいなら、もっと頑張れみたいな。
たしかにHaskellには、一般向けアプリを作りるには足りないものが多いなー。
TCP/IP鯖作るにしても、ライブラリ作るところから始めなきゃいけないし。(多分)
鯖にTimeOut処理付けるにしても、Timer関数ないし、競争書き込みもしないから
各関数にTimeOut処理付けるしかないのかな?
と言うわけでParalell Haskell燃えー。(といっても何かは知らんがね)
0012デフォルトの名無しさん
NGNGどうしてそういう結論につながるんだよ!
と思ったが、前スレに出てた Paralell Haskell で書かれた web server のことで…か。
とりあえずあれは Paralell Haskell だからライブラリがあるわけでなく
ただ単に GHC に付いてる ライブラリ使ってるだけっぽいですよ。
001311
NGNGこんな関数がほしいのよ。(Haskell消防なので笑わないでね)
readWithTimeOut :: Socket -> Int -> Maybe String
readWithTimeOut s ms = timer ms Nothing || read s
関数timer::Int->a->aは指定された時間簡約が停止する。
その後2番目の引数を返す
関数read::Socket->StringはTCP/IPにデータが来るまで簡約が停止する。
ソケットからByte列をStringとして返す。
演算子||は、競争書き込み。全ての最初に帰ってきた値を値として返す。
他の簡約は、もちろん正常に停止、消去(GC?)される。
もちろん a = b || c || dと複数書ける。
(競争に負けた簡約は、どうしたらいいんだろう?うーん、キャッシュしておく?)
ってParallell G-mahineを実装しているHaskellでも可かな?
このようなことのできる処理系あったら誰か教えて。お願いします。
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNGコンパイラ(GHC)の方にはグラフィック関係のライブラリない
みたい。Hugsでライフゲーム作ってみたけど、遅いので
コンパイルしたいが、GHC使ったことないので教えてくれ。
アニメーションもストリームにしちゃうから、グラフィックIO
も遅延評価じゃなきゃいけないが、このあたりがライブラリー
の作成を難しくしているのかな。
0017デフォルトの名無しさん
NGNGなんたる!
0018デフォルトの名無しさん
NGNG参照の透明性が…(泣
0019デフォルトの名無しさん
NGNG貴様は代入を行った(笑
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGワラタ
0022デフォルトの名無しさん
NGNG参照透明性くずすな。
002317
NGNG002422
NGNG17−20うまくオチが決まってたので、チャチをいれたくなった(笑)
002517
NGNG#だとしたら次スレも同じ名前?(笑
0026デフォルトの名無しさん
NGNG002720
NGNG丁度悩ましい思いをしてるトコなもんで(w。
>>25
その場合、このスレに関する型推論はどうなるのでありますか?(w
0028面白そうだけど、調べた事ないー
NGNGなんか、プログラムの停止性と関連付けて、
停止する関数と停止しない関数に分けるのかな?
多相型と関連付けると、ちいと面倒な結果になりそう...
#真面目に調べたことないけど
0030デフォルトの名無しさん
NGNG作って遊んでます。が、しかし!
コンパイルが異常に遅いです。
ghcってHaskellで書いてあるんですよね?
だとしたらHaskellで書かれたプログラムは
遅いということになったりして・・・鬱
実際にghcでアプリケーション作ってる人の
感想を聞かせてください。
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGこれはなんでしょうか?
0033デフォルトの名無しさん
NGNG参照透明性が確保できませんよね?
(実行するたび帰り値が違うんですから。)
なんとか参照透明性を確保する方法ってないのでしょうか?
誰か教えてください。
0034デフォルトの名無しさん
NGNGおおHaskell.NETのBetaすか?
いいですねー。
今度Downしてみよう。
0035デフォルトの名無しさん
NGNG「入力」の仲間だと思えば継続(continuation)かMonadかなぁ。
無限リストで乱数列を表し遅延評価というのも、
形式的には面白いが実際に書くと重いだろうなぁ。
まー、擬似乱数を線形合同法とかでつくるなら、
お手軽には直前に出力された数を呼出し毎に渡すとか……。
0036デフォルトの名無しさん
NGNGhttp://www.sampou.org/haskell/library-j/random.html
ほとんど>>35の言う通りのやり方。
>>35
> 無限リストで乱数列を表し遅延評価というのも、
> 形式的には面白いが実際に書くと重いだろうなぁ。
そこまで重くなるとは思えないけど?
というか、他の部分も遅いだろうから、
特別その部分が遅い気はしないだろうっていうほうが正しいか(w
003733
NGNGお答えいただき有難うございます。
>ttp://www.sampou.org/haskell/library-j/random.html
この方法ですか。なるほど。
質問してから解決策を考えていたのですが
乱数表を使うか、この方法かどちらかかなとしかないかなと
思っていたので納得出来ました。
それにしてもHaskellのIO型って変ですね。(名前が)
非決定なものは、すべてIO型なんですね。
うーん、もっと良いネーミングしてほしい。
0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNG重くなるっていうか、乱数って最新の一個だけが必要なことが多いから
過去の値が全部リストになって残ると、沢山利用した時にメモリを無駄に圧迫するかなと。
GCで回収されるならまだいいんだけど。
0040デフォルトの名無しさん
NGNG参照されていないオブジェクトは回収されないんですか?
0041デフォルトの名無しさん
NGNGクライアントは再帰中なので、
生成された乱数は、参照可能だからかな?
そりゃ、回収されんわな。
0042デフォルトの名無しさん
NGNGIO monadは、最初は本当に入出力用だったのに、
後からいろいろと付け足したのだと思われ。
別々のmonadにすればいいじゃん、と思うかもしれないが
一緒に使いたくなったときに困る。
monadの合成は、理論的に自明じゃない問題があるので。
0043デフォルトの名無しさん
NGNGだから>>36のやり方は別に特殊じゃないよ。
0044デフォルトの名無しさん
NGNG末尾再起なら回収できないかな?
0045デフォルトの名無しさん
NGNG末尾再起じゃなくて乱数リスト回収できない事気にするくらいなら、
リストよりでかいスタックを解放するようにプログラム書き換えろ。
sagesage
0046デフォルトの名無しさん
NGNG0047言語障害なんです
NGNGhttp://www.geocities.co.jp/SiliconValley-Cupertino/6957/HaskellIsOOpl.ja.html
>>13はゆーあいさん疑惑
http://www.geocities.co.jp/SiliconValley-Cupertino/6957/diary200202.ja.html
思っているだけで作る気はない疑惑
http://www.geocities.co.jp/SiliconValley-Cupertino/6957/mylang.ja.html
typo がやたら多いという罠
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNG「lambda lifter」って、どういう処理なんでしょうか?
局所関数(関数内の関数)を展開して外側の関数と一体化する処理らしいですけど
実行速度改善のための最適化処理の一種だと考えてよいのでしょうか?
http://citeseer.nj.nec.com/lester91modular.html
それと関数型言語にある代表的な最適化処理があれば教えてください。
0052デフォルトの名無しさん
NGNGCのインラインと違うの?
0053デフォルトの名無しさん
NGNG実行時までどんな関数が来るのか分からない
らむちゃんなんだから全然違うだろ。
0054無名λ式
NGNGlambda liftingというのは、
一言で言えば、自由変数を除去する変換の事です。
・funarg問題がなくなる
・環境の扱いが簡単になる
・lazinessの境界がはっきりする
などなどの利点があります。
lifterはその変換器の名前です。
Super combinatorというのありました。(これは変換後のλ式の名前)
Prentice-Hallから処理系実装の本が出ていましたが、
> それと関数型言語にある代表的な最適化処理があれば教えてください。
こういう観点で非常にいい読物だと思います。
# 今やMicrosoft Research(CLI!)のSimon P. Jonesのが一冊、
# もう一冊はHughesじゃなかったかな? 教科書になって答えがWebで配布された奴。
驚きなのはcombinatorが非常に古い概念であるにも関わらず、
λ計算において非常に本質的な役割を担うことです。
0055無名λ式
NGNG> 実行時までどんな関数が来るのか分からない
> らむちゃんなんだから全然違うだろ。
λ式ちゃんは、Lisp野郎ほど酷くないですけどね。
奴の場合、cons, eval, macroと何でもありなので。
0056デフォルトの名無しさん
NGNGhttp://research.microsoft.com/~simonpj/Papers/papers.html
ここ (の一番上のとこ) から落とせるやつですな。
0057無名λ式
NGNGこれ面白いよね。この作業苦痛じゃないのかな...
0058デフォルトの名無しさん
NGNGなんだか大変そうですね。これホントに自分でやってるのかな?(藁
0059デフォルトの名無しさん
NGNG0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGコンビネータ、結合子ですか?
圏論?λ理論の話でしたか?
うーん難しい。
0062デフォルトの名無しさん
NGNG理論的には難しいとおもうけど、
"Implementing Functional Languages: tutorial"
には実装についてわかりやすく書いてありますです。
0063デフォルトの名無しさん
NGNGサイモン パイソン ジョーンズさんがM$用に書いたやつだよね?
どのチャプターに書いてあります?
(ファイルは持ってるんだけどねー。軟弱ものなので読んでません。)
0064デフォルトの名無しさん
NGNGペイトン
0065デフォルトの名無しさん
NGNGLambda lifting については 6章
コンビネータ実装のはなしは
"Implementation of Functional Programming Language"
というよく似た名前の本の方でした。これも、どこかのWEBサイトで公開
されてたとおもうですだす。
0066デフォルトの名無しさん
NGNG"Implementation of Functional Programming Language"
本の方は簡単に見つかったけどなー。
判らない。くそー。
0067Super Combinator
NGNG何がわからないのか、話してみれば?
0068デフォルトの名無しさん
NGNG別に変人じゃなくてナイスガイなんだけど。発表は楽しいし。
006966
NGNGコンビネータといえばCL式
どんなCL式でもIKSを組み合わせたものまで分解できるらしいけど
どうやって?
あとSの意味が判らない。どう使うんだろう?
I = \ x -> x
K = \ x y -> x
S = \ x y z -> x z ( y z )
でも相手にしないでください。
頭正規形(hnf)って何?といぐらいのレベルですから。
ラムダ理論も知らないんですから。
0070Super Combinator
NGNG> あとSの意味が判らない。どう使うんだろう?
> S = \ x y z -> x z ( y z )
Distributor.
Combinator式は、グラフとして素直に表すことができるから、
部分グラフは、元のプログラムを分割したものと考えられる。
部分プログラムxと部分プログラムyの両方に引数zを渡し適用するのが役割。
x側では引数zは必要なければ、
(K x' z) (y z)
てな感じになる。(x ≡ K x')
(x z)を(y z)に適用するのは、部分プログラム同士を結合する方法が、
「適用」以外にはないから。Combinator logicやlambda calculusでは。
RAM(Random Access Machine)ではメモリ参照で、データを扱うわけだけど、
Combinator logicやlambda calculusでは、どんどん受け渡していくことになる。
# lambda calculusのβ簡約をメモリ参照で直感的に理解している人も多いと思うが。
0071デフォルトの名無しさん
NGNGI=SKK
Raymond Smullyan の "To Mock A Mockingbird" という本が楽しめます。
翻訳も出ていたと思う。
0072デフォルトの名無しさん
NGNG『ものまね鳥をまねる』森北出版 isbn 4-627-01901-7
007369
NGNG「プログラミング意味論」 横内寛文著
「計算論 計算可能性とラムダ理論」 高橋正子著
と読み理解しようと奮闘中なのですが、計算機屋の私にはさっぱりです。
しかし理論はむずかしーな。
一度ものにしてしまうと効果絶大なんですけどね。
もうちょっと、がんばってみます。
>>71
>I=SKK
む。なるほど。
上の本で書かれていましたが、改めてみると こういう意味だったんですね。
Sの機能が、ちょっとわかった気がしました。
>>70
>Distributor.
>
>Combinator式は、グラフとして素直に表すことができるから、
>部分グラフは、元のプログラムを分割したものと考えられる。
>部分プログラムxと部分プログラムyの両方に引数zを渡し適用するのが役割。
中略
>(x z)を(y z)に適用するのは、部分プログラム同士を結合する方法が、
>「適用」以外にはないから。Combinator logicやlambda calculusでは。
なるほど。
Sで式同士を組み合わせる。
もしくはSで式を分解できるということなんでしょうか?
>>71
>『ものまね鳥をまねる』森北出版 isbn 4-627-01901-7
ttp://www.morikita.co.jp/bunya/kensaku-bunya.cgi?id=67
よさそうな本ですね。購入したいと思います。
0074Super Combinator
NGNG> 両方に引数zを渡し
だから'分配器(distributor)'です。
Sはドイツ語だったかの頭文字だったはず。
K=cancel
0075石敢當
NGNGただいま amortization の勉強中。
分かったような、分からんような・・・
ということは分かってないんだなぁ。
0076Super Combinator
NGNGamortizationは、時間のかかる処理を、複数の操作に対してひとまとめにして、
平均の計算量オーダーを下げる手法のこと。
木、ソートされたテーブル、pure functional arrayなどの
再構成、構造調節などで利用される事が多い。
0077デフォルトの名無しさん
NGNGどういう物なのか興味あるなー。
教えてSuper Combinatorさん。
0078石敢當
NGNG> 平均の計算量オーダーを下げる手法のこと。
そのような雰囲気は分かるのですが、「分かったぞ!」という実感が
まだ伴っていません。もう少し勉強します。
.NETというのも名前はよく目にするものの中身はさっぱり分からない
のですが、Hugs98 for .NET というものがリリースされたようです。
http://galois.com/~sof/hugs98.net/
0079デフォルトの名無しさん
NGNGamortized analysisの章がありますよ.
0080デフォルトの名無しさん
NGNG満杯になったら新しく大きい配列を用意して全部コピーして追加。
このとき、初期サイズ1で1ずつ大きくして行くとN要素追加するの
に合計コピー回数は1+2+3+…+NだからO(N*N)。定数Cずつ大きく
していくとしても、コピー回数がC分の1になるだけだからO(N*N)
は変わらない。ところが2倍ずつに大きくして行くことにすると、
1+2+4+…+NだからO(N)になるのね。しかし「1個追加するときの
最大計算量」はどの方法でも(その1個であふれた場合はどのみち
コピーするんで)変わらない。逆に言えば、最大計算量を考える
変わりにN個の操作全体の計算量を考えてその平均を取ると
1個追加する際の平均的な計算量はO(1)だよね、っていうのが
amortized analysis。
0081デフォルトの名無しさん
NGNGここに書いてあることかな?
英語が読めない。
0082デフォルトの名無しさん
NGNGだったら、そうだと思う。
でもこのスレの人でも、英語は壁になるんだ…。自動翻訳希望?
008381
NGNG他力本願全開。
0084石敢當
NGNG> 変わりにN個の操作全体の計算量を考えてその平均を取ると
> 1個追加する際の平均的な計算量はO(1)だよね、っていうのが
> amortized analysis。
これは良く分かります。ただ、これだけだと amortization などという
言葉を持ち出すまでもなく、単に「平均」ですよね。(違うのかな?)
もし単に平均コストのことを言っているだけだとすると、
banker's method だの physicist's method (>>79の本では
accounting method と potential method)だのの技法を使い、
多くのページを割いて解説するほどのことじゃないように
思うんです。
>>80の例の場合、配列の確保がサイズに関係なくO(1)で行えると
仮定すると、あふれたときに1度に全部コピーするのではなく、
新しい要素が追加されるたびに要素を2個ずつコピーすることに
すれば1個追加する際の「最大の」計算量がO(1)となります。
結局、amortizationの何が良く分からないのかということを
改めて考えてみますと、amortized analysisで得られた平均
計算量が、平均ではなくて最大の計算量となるような実装が
いつも得られるのだろうか、ということであるような気が
してきました。
まだ良く分かっていません。変なことを書いていたらごめんなさい。
0085デフォルトの名無しさん
NGNG> これは良く分かります。ただ、これだけだと amortization などという
> 言葉を持ち出すまでもなく、単に「平均」ですよね。
「最悪」の場合の1ステップあたりの「平均」ではないでしょうか。
0086デフォルトの名無しさん
NGNG↑
ない・・・
0087デフォルトの名無しさん
NGNG↑
ここも講義録だったような気がするんだけど、つながらない・・・
0088デフォルトの名無しさん
NGNGhttp://www.ipl.t.u-tokyo.ac.jp/~mizuhito/CS/
0089デフォルトの名無しさん
NGNG最初はやはり名前を入力させてXXXさんこんにちは、だと思い試したのですが
putStr "123" とか getLine とか単体では動くのに、次のように組み合わせるとエラーになります。
Prelude> putStr getLine
ERROR - Type error in application
*** Expression : putStr getLine
*** Term : getLine
*** Type : IO String
*** Does not match : [Char]
一行入力をそのままエコーすることを意図しているつもりなのですが、何故でしょうか?
0090デフォルトの名無しさん
NGNGgetLine の型は IO String だが putStr は String 型を貰うので
型エラーになります。(IO が付いているかいないかの違いだけど)
getLine >>= putStr とすれば意図してるように動きます。
「>>= って何?」などと思うのでしょうが、説明するのは大変なので
http://www.sampou.org/haskell/tutorial-j/ などを読んでください。
0091デフォルトの名無しさん
NGNGERROR "ファイル名":3 - Type error in function binding
*** Term : sel
*** Type : a -> IO a
*** Does not match : a -> a
*** Because : unification would give infinite type
というのが消えてくれません。
module Main (main) where
sel x = do putStr "(y/n) ? "; c <- getChar
return (
case c of
'y' -> sel (x + 1)
'n' -> x
_ -> sel x)
main = do putStr (show (sel 0))
selの型は Int -> IO Intのつもりなのですが、型を明示しても駄目です。
いじっていると、IO (IO Int)みたいな型がエラー報告で出るときもあります。
このコードはどうすれば通るのでしょうか?
それと、IOを重ねる意味は無いように思えるのですが、IO (IO Int) というのはどういう状態なのでしょうか?
質問ばかりで申し訳ありません。
0092デフォルトの名無しさん
NGNGcase c of
{'y' -> sel (x + 1)
;'n' -> x
;_ -> sel x}
この式の型は何でしょう?
009391
NGNGそれをreturnで返していますから、selの返値もIO Intで、
selの型は Int -> IO Int …
エラーになるということは、間違った理解なのでしょうけれど…
009491
NGNGとすれば、ただの Int を IO Int に揃える必要があるということですか?
0095デフォルトの名無しさん
NGNG> それをreturnで返していますから、selの返値もIO Intで、
return の型は Monad m => a -> m a です。
>>91 のケースだと m は IO。
> とすれば、ただの Int を IO Int に揃える必要があるということですか?
うん。で、そういう場合に return を使う。
sel x = do
putStr "(y/n) ? "
c <- getChar
case c of
'y' -> sel (x + 1)
'n' -> return x
_ -> sel x
009691
NGNGmodule Main (main) where
sel x = do putStr "(y/n) ? "; c <- getChar
case c of
'y' -> sel (x + 1)
'n' -> return x
_ -> sel x
main = sel 0 >>= putStr . show
(r <- case …にしてその後にputStr "/"とreturn rを続けて書いたら、'n'を打った時も表示されたので)
この場合returnはcaseから抜けているだけですよね?
doを使っている場合も、returnを書かなくても、最後の式が返値になるのですね。
0097デフォルトの名無しさん
NGNG009891
NGNG0099デフォルトの名無しさん
NGNG深い意味はないです。return は、返り値を
もって呼び出し元へ帰る命令ではなく、単に
a 型の値を m a 型の値に写像する関数だと
いってみただけです。
0100デフォルトの名無しさん
NGNG成程…Haskellのreturnはreturnしないのですね。
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG感じかも。関数型言語の発想が根本からわかってない。
IOモナドって一見して普通の手続き型にも見えますからねえ・・
関数型が全くわからない人は、HaskellのまえにMLを経由した方が良い
というのは正しいのかも。
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGHaskell(特にGHC)って例外処理とか、入出力じゃない副作用も
どんどんIOモナドに入ってるじゃん。
モナドの合成が理論的に難しいかららしいけど、そのうちに現実的な
プログラムだと何でも一つのモナドの中で書くことになって、ほとんど
MLみたくなったりはしないの?(手続き型言語とまではいわないけど、
「どこでも副作用」って感じで)
0105デフォルトの名無しさん
NGNGモナドは副作用じゃないのでOK OK。
逆に言うとMLの利点がなくなってくる。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNGなかはわるくないです。
MLとHaskelは
ちょっと雰囲気は違うような気はしますけどね。
でもまあそれは両方使ってみれば解ることで。
0109デフォルトの名無しさん
NGNGHaskell-MLというのが有るらしいですYO!
0110デフォルトの名無しさん
NGNGMLの不純さが嫌なのかも?
どうなの?>ALL
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNGML(Ocaml)は現実的にある程度の副作用を認めている代わりに
使っているとコンパクトな感じがします。
副作用も使えると言うだけで、副作用のある構文を使わずに書く事は
全然出来ますし、遅延評価もコードによって簡単に実現できます。
未だ出来あがっていないものの、ML2000の仕様書では言語自体に
遅延評価など新しい機能がかなり含まれています。
Haskellは純粋を歌ってはいますが、
結局の所モナドというものに問題を押しこんだだけのようにも思え
美しくないようにも思われます。
仕様もわりとごちゃごちゃしている気がします。
言語の性質上ML並みに速くなる事も難しいのではないかと思います。
0113デフォルトの名無しさん
NGNG0114104
NGNGWadlerとかPeyton Jonesとか面白い人が多いし。(そういう問題か?)
>>113
一応、MLでもHaskellと同様のmonadicなプログラミングスタイルは可能。
MLだと文法的に面倒で、Haskellを使ったほうが楽だから誰もやらないけど…
0115デフォルトの名無しさん
NGNG中途半端な感じが払拭できないということでいいのか?
0116デフォルトの名無しさん
NGNG0117デフォルトの名無しさん
NGNGHaskllを関数型を知らない人に触らせると、
モナドでC言語かよ!ということをやろうとする。
しかして正しく正面玄関から入ろうとすると、難解過ぎる。
MLの方がそういう意味でも適度に関数型な気がする。
純粋関数型を言うならば、遅延ストリームでゴリゴリ書くのが基本に
なってるような言語であるべきかなと思ってみたりする。
0118デフォルトの名無しさん
NGNG多目的言語なんだから。
0119Super Combinator
NGNG> Haskell(特にGHC)って例外処理とか、入出力じゃない副作用も
> どんどんIOモナドに入ってるじゃん。
最近Haskellの動向は探ってないんだけどこれ本当?
IOErrorがIOモナドmoduleにあって、
HaskellがIOError以外ろくに例外をsupportしないだけなんだと思ってたよ。
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNGモナドを使うと、手続き型言語を
関数的に解釈することができますか?
0122デフォルトの名無しさん
NGNG「関数的に解釈」の意味がよくわからない。
Haskellでインタープリタが書けるか?
という意味じゃないよね。
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNGモナドを使うと、どうみても副作用な操作でもfunctionalな
操作と解釈できるわけですが、それと同じように手続き型言
語のプログラムに純関数的な意味を与えることができますか?
という意味です。
0125デフォルトの名無しさん
NGNGIdealized Algolとかいうのがなかったっけ。
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNGできません。
強引に無理矢理こじつけることならできるかもしれないけど意味無し。
0128デフォルトの名無しさん
NGNGモナドを使えば、代入、逐次的実行、手続き型ライクなI/O、例外などを
純関数型の枠組みで扱える。gotoくらいならもともとモナドに関係なく
等価な純関数型言語に変換することができる。
Cは無謀だがMINIMAL BASICくらいなら、純関数型とみなすことは可能だろ
う。
0129Super Combinator
NGNGDenotational semanticsじゃ駄目?
domainの性質がやっかいになるから、いいことないけど。
そもそも「簡単に」できるくらいなら、関数型言語の存在意義が…
0130デフォルトの名無しさん
NGNG手続き型の言語のインタープリタを Haskell で書いたら、
その言語の意味を与えたことになる?
ならない?
0131デフォルトの名無しさん
NGNGなるんじゃない?
きちんとやれば操作的意味論だろ。
0132デフォルトの名無しさん
NGNG実際に各項が何時評価されるか?どういう順番で評価されるか?
ということが予測しづらい(できない)からねー。
その点、正格言語や手続き型言語は評価の順序が一目瞭然だからねー。
Prologにカットオペレータがあるように、Haskellも競争書き込みで
評価の順序を、ある程度コントロールできる様にしたらよいのかな?
0133デフォルトの名無しさん
NGNG?? 問題なのは結果であって、
順番なんてどうでも良いだろう。
順番じたいが望む結果に含まれる
(例えば入出力とかGUIとか)なら、
そこだけモナド使えば良いしさ。
0134デフォルトの名無しさん
NGNG133も書いていますがコンピュータの入出力は
ストリームを基本としているものが多いですよね。
しかし、ストリームにとって並び方も結果の内ではないでしょうか?
プログラムは外部と入出力して、なんぼのものだと私は思っています。
ゆえにストリームのようなモノに対して実行順序がコントロールできることは
プログラミング言語にとって重要であると思います。
そうじゃなきゃPrologもカットオペレータなんて付けなかった
と思います。
あと私のような消防には、実行される順序が予測できないと
デバッグしづらいです。(もしかして、こっちが本題か?)
0135デフォルトの名無しさん
NGNGほんとに消防だな。Haskellだって
ストリームの順番が狂うわけはないだろう。
ストリームは「いくらでも長くなりうる列」
というデータだ。関数型の基本はデータの値を
求めることなんだから、モナドなんか用いなくたって
ちゃんと求まる。
0136チュウボウ
NGNG副作用あり=>参照透過性がない=>数理論理的でない
数学って、まったく副作用のない構成になっているの?
0137デフォルトの名無しさん
NGNG副作用がなんなのかわかってる?
0138デフォルトの名無しさん
NGNG0139チュウボウ
NGNGオレの理解
状態という一種の記憶域のようなものがあってその値が
変わること。
数学ではオートマトンとか除けば、状態のような概念は
知らない。
0140デフォルトの名無しさん
NGNG評価順序に依存してるから
0141チュウボウ
NGNG0142デフォルトの名無しさん
NGNGそう思えるのはモノが単純な場合だけ
0143チュウボウ
NGNG主語+述語が人間の頭にあってるような気がする。
(状態があるならば副作用があると思ってる)
ペトリネットなんかかじってみてると、そんな気がしてきた。
ttp://www.aichi-pu.ac.jp/ist/~qua/intropn/intropn.html
0144デフォルトの名無しさん
NGNG「なぜ関数プログラミングは重要か」に副作用が無い事のよさが力説されてた。
実感湧かなかったが。
0145デフォルトの名無しさん
NGNG日本語は主語なんかなくても良い言語だよ。英語カブレめ(w
実際この書き込み(145かな?)のなかに主語のある文は一つもないが、
意味はちゃんと通じるだろ?
01465月病
NGNG努めたわけよ。モナドの意味もつかもうとしてがんばった
んだけど、あるときふと、こんなに無理して副作用さけよう
という努力はなんなんだろうと感傷的になるわけよ。
0147デフォルトの名無しさん
NGNG0148チュウボウ
NGNG>日本語は主語なんかなくても良い言語だよ
おお、そうであった。日本語は述語だけでつうじるのだ。
日本語こそ真の関数型言語であった。なんてわけないか。
0149デフォルトの名無しさん
NGNGつーか…
プログラムって要するに「入力と出力の関係を記述する」
ってだけで良いはずなのに、状態を持ち出すとよけい面倒に
なることも多いでしょ。
01505月病
NGNGストイックに記述する。そうすると見えるすばらしい世界
を教えてください。
0151デフォルトの名無しさん
NGNG> 入力と出力の関係を記述する
時系列的な入力と出力の表現には内部状態があった方が記述が楽。
あと、入力の長さが不定なときも。
だから入力に対して反応するタイプのプログラムでは状態記述がないと不便。
>>145
主語がなくていいのは主語が明らか(容易に推測可能)な時だけだよ。
フォーマルな文章では日本語だって主語が必要。ここはかなりインフォーマルだからね。
ちなみに英語でも命令形などでは明らかな主語が省略されている。
0152デフォルトの名無しさん
NGNGなんで、ストリームやモナドなどではプログラムの動作が完了した時点では
入力が決定して、出力も決定する筈ということに注目して、
実行時に対応関係を組み立てるわけだ。
0153デフォルトの名無しさん
NGNG無限列の有限部分列から有限部分列への対応関係なら書ける。
そしてその対応関係が再帰的に定義できているなら、
限りなく計算を続けられる。
ただ、有限部分列の入力から続きを計算する際に何度も同じ計算が
繰り返される場合がある。そういう場合は内部状態としてメモしておけば
計算効率が改善される。
0154デフォルトの名無しさん
NGNG現実的にはどんなケースがありますか?
0155デフォルトの名無しさん
NGNGしておけばJavaなんかでも再帰的に記述できるよ。
0156デフォルトの名無しさん
NGNGhttpプロクシサーバとか。
リクエストは無限列とみなせる。
以前にあったリクエストなら、内部状態としてキャッシュしとけば
速くなる。この場合でも副作用は別に必須じゃないけどね。
0157デフォルトの名無しさん
NGNG今はC、C++、C#、Javaで手一杯だよ・・・
0158デフォルトの名無しさん
NGNG副作用が絡むのは配列やオブジェクトの部分更新とかが絡むときが典型。
もちろん更新する値以外も全部複製してしまえば副作用は消せるが、
効率は・・・・・・(ガクガクブルブル)
----
>>155
遅延評価は評価の仕方を「メモ」って行くわけだが、
結構、後でそのメモ・ツリーを辿るのに時間がかかったりする。
0160デフォルトの名無しさん
NGNGシンタックスだけはJavaに似てるけど。逆に言語から仮想環境を想定するとしたら
どんなものになるんだろね。Hakell、というより関数型言語全般のために
作られたようなもの。あるとしたらどんなもんでしょ?
0161153
NGNG0162デフォルトの名無しさん
NGNG0163134
NGNG>ストリームは「いくらでも長くなりうる列」というデータだ。
確かに漏れも、そう思います。ストリーム()
しかし、haskellのモデルではIO入出力はストリーム(ぎリスト)ではないですよね。
ということは結局、評価の順序が入出力に影響するはずですよね。
評価の順序を強制するためにモナドというものを利用しているんじゃないですかねー?
どうなんでしょ。
0164デフォルトの名無しさん
NGNGここの下の所に「Programming Languages:Concepts and Constructs 2/E」
の「日本語訳版を期待」という文字が見えるんですが、今翻訳中なのでしょうか?
もしそうなら超期待!!
>>158
どうも効率面を問題にされているようですが、
私自身たいして関数型言語の経験はありませんが、
仕事の関係上感じている事です。
コンパイラ作ってると、この副作用がないというのが
結構オプティマイズに有効だったりするので、
結構これからの言語の核にすえるのは悪くないと最近思ってます。
計算の依存関係が明白でないと最近のスーパスカラーみたいに
命令スケジュールが必要だと面倒です。
全体的とはいわなくても部分的には関数型言語が高速化への寄与大きいと考えています。
計算機の並列度が上がってくると、少し考え方を変えてみるのも悪くはないと思っています。
ちなみにモナドはあんまり良くわかっていません。(TT)
だれか教えてくれー
0165デフォルトの名無しさん
NGNG昔のバージョンではストリームでI/OやってたんだよHaskellは。
I/Oエラーが扱いにくくってなあ…
モナドの方が楽だよ。
0166134
NGNG本当ですか?
何時の頃のモノなんでしょう?
処理系の名前とバージョンを教えてもらえませんか?
>I/Oエラーが扱いにくくってなあ…
>モナドの方が楽だよ。
たしかに、そうですね。
うーん、モナドから逃げてるのかなー?俺は
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGどうでしょう?
関数も各引数を繋ぐための糊だと考えると
副作用が無いほうが嬉しいのでは?
0169158
NGNG効率は計算機上での実行の際のことです。
・・・・・・というか効率を考えた動作をガチガチにプログラマが記述する際に
場合によってはあるほうが便利ということですね。
一方、最適化のためのプログラムの解析においては
一般に副作用がないほうがやりやすいのは確かだと思います。
だからこそ代入を消してSSAなんて形式に落としたりもするんでしょうし。
0171158
NGNGそれほど悩ましくないんですが・・・・・・。
0172デフォルトの名無しさん
NGNGHaskell 1.1まではそういう仕様だった。全ての準拠処理系がそうなって
たはず。stream I/Oとcontinuation-based I/Oの両方が使えた。
http://www.haskell.org/definition/haskell-report-1.1.tar.gz
Monadic I/Oがあんまり便利なんで今は全部そっち。
0173デフォルトの名無しさん
NGNG配列使えばいいじゃん。副作用なしの。
SISALっていう関数型言語がそうやって、スーパーコンでも
Fortranに負けない性能出してたよ。
Fortran厨は他の言語が書けなかったので普及しなかったが。
0174デフォルトの名無しさん
NGNG0175158
NGNGhttp://www.sys.uea.ac.uk/~jrwg/Sisal/index.html
を読んで見てるけど、やたら配列に特化した言語だなぁ。APLを思い出したよ。
サワリの部分を読んでの感想としては、
配列に特化した構文が多すぎるし、拡張性にも疑問が残る。
この言語を実装する上で研究された内容(解析や最適化の技術)は有益そうだが、
それをつかって書けと言われると結構苦痛かも。
CやFortranのソースに混ぜられると言われてもねぇ。
0176158
NGNGむしろ「スーパーコンのために」開発されたようだ。
スパコン以外にも移植はされているようだが、
どうもメインの技術ははデータ並列っぽい気配が。
もっと詳しく読んでみないと判らない部分もあるが、
そうなると今時のマシンの記憶階層と
マッチするかどうかは些か怪しげ。
0177Super Combinator
NGNG"Comprehending Monads", Philip Wadler読め。面白い。
0178デフォルトの名無しさん
NGNG文句の多いヤツだな。
0179デフォルトの名無しさん
NGNG>>173 は「Haskell の副作用無しの配列使え」と言ってるのだろう。たぶん。
0180デフォルトの名無しさん
NGNGどんな実装してるんでソ。>「Haskell の副作用無しの配列使え」
私が読んだ何件かの「副作用なし配列」の論文は皆頑張っていたけどヤパ−リ
オーバーヘッドが大きくて生の配列ほどには早くない・・・・・・。
0181デフォルトの名無しさん
NGNG>Prologにカットオペレータ
カットオペレータ思い出した。これでProlog嫌いになった。
ところで、Prologも関数型かな? 副作用ないみたいだし。
真偽の2値のみを返すと考えられるかな。もっとも偽の値が
返ればストップするので真のみ返るが。
0182デフォルトの名無しさん
NGNG関数型じゃないね。論理型。
項の「値」を求めてるわけじゃない。
定理を満足する変数の値の組(代入)を求めている。
両方を組み合わせた関数論理型ってのもあるけど。
0183第5世代はどうなった
NGNG論理式の値を求めるのでなく、妥当な推論をするんだった。
unificationできなきゃ終わりという形式だったね。
Hugsのライブラリーに簡単なPrologあるね。
unificationなんかはもともとhaskellにあるから、
簡単に実装できるようだ。
そういえば、カットオペレーターもhaskellで実装
してたかな。
0184デフォルトの名無しさん
NGNG副作用がありまくる手続き型言語や正格言語ではデバッグで
苦労しない。というかデバッグしやすい。
非正格言語の優秀なデバッガって無いからね。
一つでもモデル(非正格言語のデバッガのね)が出来ればね。
0185デフォルトの名無しさん
NGNGOO対応にしたような言語で、.NETにも対応してるらしい
んだけど、この言語ってどうですか?
http://www.mondrian-script.org/
0186デフォルトの名無しさん
NGNGていうか、副作用が無いってのはようするに
思わぬバグが混入しないようにする効果があるわけだから、
デバッグ以前にバグが混入しにくいのでは?
0187デフォルトの名無しさん
NGNGやっぱ銀の弾丸はないもんだよねぇ。
0188デフォルトの名無しさん
NGNGでもバグが無くなる訳ではないでしょ?
仕様のバグという根絶不可能なバグがあるんだから。
やっぱデバッガ必要でしょ。
0189デフォルトの名無しさん
NGNG既存のデバッガ的な考えは合わないよね。
0190デフォルトの名無しさん
NGNG副作用がないので
Unit Test あたりが向いてるかも。
0191デフォルトの名無しさん
NGNGのあたりだろうか。
0192デフォルトの名無しさん
NGNG仕様のバグとデバッガが関係あるんですか?
0193デフォルトの名無しさん
NGNGコードの打ち間違いと理論にだけ気をつければ
やっていけます。
0194Super Combinator
NGNG帰納推論系の人たちで、
間違った具体例の指摘から仕様を直したり、
なんて事が流行ったよね?
そのengineのUI programはdebuggerと呼ばれることが多かった。
0195デフォルトの名無しさん
NGNG屁理屈か
0196デフォルトの名無しさん
NGNG非常に少なくなると言うことでいいのか?
0197デフォルトの名無しさん
NGNG0198え?
NGNG0199デフォルトの名無しさん
NGNGプログラミング言語の前に日本語を勉強尻。
0201デフォルトの名無しさん
NGNGとおもた。
Monadになったら改善できるのかしらん?
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG並列処理の話?
0205デフォルトの名無しさん
NGNG他に使い道は?
0206デフォルトの名無しさん
NGNG「バグ取りの他に使う」と「バグ取りに使わない」の
区別もつかない糞は小1からやりなおせヴォケ
0208デフォルトの名無しさん
NGNGこういうものが作りやすいのが関数型言語の特徴って言われてるから
そっちに期待しちゃうな。あくまで素人の考えだけど。
0209C厨房
NGNG0210デフォルトの名無しさん
NGNG無視できない何かがあるんですかねー。
0211206ではないが
NGNG他人が書いたプログラム(またはライブラリ)を理解するために
デバッガを使って動作を見るのは、けっこうよく使う手だと思う。
>>208
普通は静的な検証ツールはデバッガには含めないと思うけど、
参照透明性の高い関数型言語では、静的/動的の境界はどう定義するんだろう?
例えば多相型の型エラーをデバッグするのって、静的なのか動的なのか…
0212デフォルトの名無しさん
NGNG弱い気がするのは気のせいでしょうか?>>211
0213デフォルトの名無しさん
NGNGお前のような厨房がな。
0214201
NGNG木の好き勝手なところを簡約していくっていうか。
そでで再帰的に定義された無限リストの簡約とかまちがうとこわいな。と。
P.Wadlerの入門書にもそれがらみの話あったよねえ?
0215デフォルトの名無しさん
NGNG動作をステップ実行する従来のデバッグ手法のイメージとはあいいれないかも。
でも、計算順序を無理矢理いれこむ、モナドIO使いまくりのプログラミングなら
命令プログラミングとおんなじだから、print デバッグができるよ。
0216デフォルトの名無しさん
NGNG関数型でイベント駆動処理を書くのって、
ちょっと想像できないんですが。
0217デフォルトの名無しさん
NGNGようとしたけど古いから sage
0218デフォルトの名無しさん
NGNGGTK+HS のサンプルコードとかみてみれば?
0219デフォルトの名無しさん
NGNGモナドによるI/Oのコードをじっとみつめると
入力列内の文字種に応じて呼ばれるハンドラの集まりとも見えてくる。
それがメッセージ列に変わったと思えば書けそうな気がしてくる。
0220デフォルトの名無しさん
NGNG処理系の実行過程の確認
最適化の結果、プログラマーの予想もしないプログラムに変化したりしないとか
その確認をする。勉強にもなるね。
某本にもデバッガでは、シングルステップを使えと載っていた。目から鱗。
0221デフォルトの名無しさん
NGNGGHCか何かだと、unsafeとか何とかいうモジュールに、
どこでもprintできる関数がなかったっけ。
まさにprintfデバッグのための抜け道として。
0222デフォルトの名無しさん
NGNGそれは要するにデバッガがアナライザだって言ってるだけでは?
そういうのとは微妙に話が違うような気がするなー。
つまり、デバッガにはそういうブラウジング機能とは別に
何かあるって言ってるんだろ?
0223デフォルトの名無しさん
NGNGいや、デバッグ以外に使い道があるかどうかって話だろ?
だからアナライザとして使ったり、ってのも答えとしてアリだろ。
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNG0226デフォルトの名無しさん
NGNGデバッガがバグを指摘するわけじゃなし。
0227デフォルトの名無しさん
NGNG書くのが遅い
0228デフォルトの名無しさん
NGNG遅延評価だと、どのprintが先に実行されるかわかんなくねえ?
そんなんでデバッグできるのか?
0229デフォルトの名無しさん
NGNG何をデバッグしたいかによるけど。
(文字列やファイルの最終的な内容も含めた)計算結果が
正しければ良いなら、別に求まる順序は重要じゃないよね。
まあprintを使うってことは順序も気にするんだろうから、
もともと$!やseqを使いまくってるんじゃないの?
0230haskell
NGNG0231デフォルトの名無しさん
NGNG0232Super Combinator
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4764901811/qid=1022390348/sr=1-17/ref=sr_1_2_17/250-5692221-3686632
萩谷昌己「関数プログラミング」
http://www.amazon.co.jp/exec/obidos/ASIN/4535608172/250-5692221-3686632
あたりで。
0233デフォルトの名無しさん
NGNG竹内先生の Lisp本もじつは読んでないんだよなあ。
0234デフォルトの名無しさん
NGNGSMLだって出てるのに……。
0235デフォルトの名無しさん
NGNG日本のHaskellユーザの数が、初回印刷部数(200)を越えたら。
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGそこが特別なんじゃないの?
0239デフォルトの名無しさん
NGNG訳本でいいからさ。
0240デフォルトの名無しさん
NGNGいろんな図書館に要望しまくれば、
なんとかなるんじゃないの?
0241デフォルトの名無しさん
NGNGhttp://www.onweb.to/ken9/log/039.htm
0242デフォルトの名無しさん
NGNGここのところ素人も増えてるぞ>オレオレ
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG東京ビッグサイトの巨大同人誌即売会サークル抽選当選しますた。
でもジャンルはプログラミング言語とはホド遠いけど(w。
0245デフォルトの名無しさん
NGNG適当でいいからHaskell本もきぼんぬ
買いに行くから(藁
0246244
NGNGって、実際問題としてHaskell本を作る余力はなし。
0247デフォルトの名無しさん
NGNGR. Birdの「関数プログラミング」第2版を翻訳して出版して欲しい。
流れで近代科学社に。
0248デフォルトの名無しさん
NGNGみなしHaskell本では。
0249デフォルトの名無しさん
NGNG0250デフォルトの名無しさん
NGNG結局、日本語のHaskellの本て有るんですか?
無いんですか?
(というのか無いのか?)
0251デフォルトの名無しさん
NGNGおどろき。
どんな研究なんだ!?
0252デフォルトの名無しさん
NGNGならむしろおまえの研究室で発行しる!
0253デフォルトの名無しさん
NGNGPurely functional languages like Haskell
are excellent within certain niches,
but many simple programming exercises
can quickly turn into problems that require a PhD. to solve.
大げさだな・・・
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258Super Combinator
NGNG0259デフォルトの名無しさん
NGNGare excellent within certain niches,
but many simple programming exercises
can quickly turn into problems that require a Female Attire. to solve.
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNG0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNGFranTk
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG女装は代入ではありません。ラップするだけです。
本人への参照はそのままにしてください。
女装人格←女装関連の知り合い
↓
本人人格←普通の知り合い
私個人は女装人格をそのまま丸投げの委譲によって実装しているので、
実質どっちを見てても服装と化粧以外はさほどかわりません。
>>262
頑健なソフトウェアを構築するには
例外の存在をなかったことにして無視してはいけません。
0267デフォルトの名無しさん
NGNGつまらんし。
0269デフォルトの名無しさん
NGNG昨日、母の葬式に出たんです。享年54歳。
そしたらなんか自分、涙が一滴もこぼれないんです。
で、よく見たら会ったこともないような親戚のおばさんですら泣いているんです。
もうね、アホかと。馬鹿かと。
俺な、親の死を目の前にして放心してんじゃねーよ、ボケが。
目の前に人が死んでるんだよ、母親が。
なんか親子連れとかもいるし。一家4人で葬式か。ほんとありがとう。
パパは息子さんに挨拶してくるから車で待ってなさい、とか言ってるの。いい親父だな。
俺な、親が死んでんだからもっと泣けと。
葬式ってのはな、もっと殺伐としてるべきなんだよ。
死に化粧をみた瞬間いつ涙があふれてきてもおかしくない、
泣くか叫ぶか、そんな雰囲気が普通なんじゃねーか。オレ、なんなんだよ。
で、やっと葬式が終わったかと思ったら、なんか次々と母のことが思い出されるんです。
そこでまたぶち切れですよ。
あのな、今さら思い出したところで意味ねーんだよ。ボケが。
得意げな顔して何が、今度の休みには帰るよ、だ。
俺は本当に休みに帰るつもりだったのかと問いたい。問い詰めたい。小1時間問い詰めたい。
俺、適当に親との距離をとりたかっただけちゃうんかと。
親不孝者の俺から言わせてもらえば今、若者の間での最新流行はやっぱり、反抗期、これだね。
親ってのはいつまでも生きているもんだと思っている。これがガキの考え方。
親の期待をかなえたつもりで一人暮らし。そん代わりコミュニケーション少なくなる。これ。
で、「少しだけ仕送りいれといたから」 「ああ、無理すんなよ」。これ最期の会話。
今になって後悔ばかりが思い出される、諸刃の剣。
まあお前ら若いもんは、ほんの少しでもいいから親孝行しなさいってこった。
0270デフォルトの名無しさん
NGNGつうか、がっこで関数言語やってた奴が、
仕事でオブジェクト指向の世界に戻されると、
「このオブジェクト指向言語の型システムは...」とか、
「RDBの動的型が云々...」って事を無意識に考えてしまって、結構ハマるんだよね。
そーゆー意味で、関数言語関係者を招聘したMS Researchの今後に期待
0271デフォルトの名無しさん
NGNGすまん、>>256でいいのか?
0272デフォルトの名無しさん
NGNGというわけでこのスレでは Simon P.J. 先生を「サイモン博士」と
呼ぶことを漏れは提案したいっすけど駄目っすか?
0273デフォルトの名無しさん
NGNGそのせいで全国の工学部(の一部)の授業に拡散・伝染してるから、
1000部ぐらいすぐに出ると思ってたんだが、どうよ?
女装じゃ無理かもしれんが…(それとも女装のほうががいけるか!?)
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNG売り子が女装でなくてじょせーだと嬉しい、ってオイ>漏れ
0277デフォルトの名無しさん
NGNGみんなそんなもんか。
私は大堀先生に感化されてML使ってる。
0278デフォルトの名無しさん
NGNG女婿だと嬉しいの?
0279!275
NGNG出来ればレイヤーさんきぼ。
0280デフォルトの名無しさん
NGNG分岐予測ミスが発生してストールであぼーんな訳ですが、
関数型言語って手続き型に比べてその辺どうなの?
ガードの存在って影響ある?
CMOVccとかSETccとか使ってくれるのかな。
0281275
NGNG予測が当たりまくるタイプの条件分岐なら、
問題無いという話を,漏れは聞いたことがある.
で,外れまくってイヤソなタイプのコードもあって,
例えばブレゼンハムのアルゴリズムは,結構イヤソだ,
という報告も聞いたことがある.
漏れの直感ではイヤソなタイプという気がする.
GHC はバージョンupが烈しいんで,最近の奴は
自分にはようわからん.ココは Haskell 板なんで
Haskell の話と思ったが,もしかして strict な
奴の話も必要 ?
0282デフォルトの名無しさん
NGNGSETccって何?
判定と分岐を分離して、間に命令をはさむDeleySlotの一種のような
ものと勝手に想像したがどう?
0283Super Combinator
NGNGCMOVcc: 条件付き移動命令。
if (条件)
var = X;
} else {
var = Y;
}
を
var = Y;
if (条件) var = X; // SETcc or CMOVcc
に。
もちろんvarはregister割り当てされてるのな。
0284デフォルトの名無しさん
NGNGx86にも最近のはついてるときいて感心した私。
っていうか、関数型言語って naiveな実装だと closure作りまくりで
予測分岐も糞もない、って気がするんだけどだめ?
ちゃんとかりかり tuning する、GHCみたいのだといいかんじになるのかも
しれないけど。よくわからん。
結論: 関数型言語は dataflow machineに実装しよう(ネタ)
0285デフォルトの名無しさん
NGNGネタとは言い切れん。
いい加減に今のアーキテクチャでのクロック向上ってのも物理的限界が
見えてきたしね。
0286デフォルトの名無しさん
NGNGそうだそうだ。(煽)
ついでに非同期って正義 ?
Crusoe の内部論理では活かされてるとか
聞いたことがあるけど > 非同期
0287デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/academic/ark/Webfiles/languages.htm#mondrian
0288デフォルトの名無しさん
NGNG盛り上げれ
0289石敢當
NGNG0290デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNGどなたかLinar Typeというものが、どんなモノか教えてもらえませんか?
「論文紹介:How to Declare an Imperative」
ttp://www.is.titech.ac.jp/~kando9/work/Progress/Monad/Monad.html
で見た限り純粋関数型言語でIOや状態を扱うのに
将来有望そうな理論(技術?)に見えました。
ttp://citeseer.nj.nec.com/ のどこかとかが参考になりそうですが
どれが良いのやら。さっぱり。
だれか基礎と応用の両方を教えていただけないでしょうか?
お願いします。
0292デフォルトの名無しさん
NGNGそしたら、そこからreferされてる論文を次に読むとか…
(citeseerがOKなら英語でOKだよね。)
とりあえず、すでにHaskellを知ってるなら、Cleanって言語の
uniqueness typingって仕組みを使ってみるのが吉かと。
http://www.cs.kun.nl/~clean/で合ってる?>もっと詳しい人
0293デフォルトの名無しさん
NGNG論理にヨワい自分は岩波の 2 冊本
「コンピュータサイエンス入門」
で、やっとこ様相論理に辿り付いたトコなんで
有意義な助言はできんが...
とりあえずロジックに関してどれくらいわかってます ?
>>291
0294デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=%E7%B7%9A%E5%BD%A2%E8%AB%96%E7%90%86&ie=UTF-8&oe=UTF-8&hl=ja&lr=
0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGそれは言える…
CleanとかMLとかは速いらしいのに!
0298名無しさん@Emacs
NGNGコンパイラ自体がhaskellで書かれてる
ことによる遅さがちょっとイラつかせる。
また勉強中の身だから偉そうなことは
いえないですね。失礼しました。
0299デフォルトの名無しさん
NGNG0300291
NGNG>>292
英語は、辞書が在れば何とか読めるという程度です。
「uniqueness typing」ですか。Cleanの特徴の一つらしいですね。
評価するたびに違う(多様?)型を生成するというぐらいしか知りません。
参照透明性は確保されそうですが、使いやすいの?
というぐらいの認識しかありません。もう少し調べてみます。
>>293
私も論理に弱いです。
Linear Ligicと言われても、使った公理は無くなる。
つまり公理の有る無しで状態を表すようにするという位しか
わかっていません。
この認識も間違っているかもしれませんし・・・
つたない英語力と乏しい知識を総動員して何か判りやすい文章、本、論文
は無いかとあさっているという状態です。
>岩波の 2 冊本「コンピュータサイエンス入門」
ですか今度、大きい本屋に行ったときでも見てみます。
>>294
日本でも沢山の所が研究しているんですねー。
みてみます。
0301デフォルトの名無しさん
NGNGそれはグラスゴ大-MSRのサイモン教授のコンパイラの話 ?
手軽に遊ぶには、HUGS とかシャルメル大のコンパイラが
おすすめ。
>>300
キーワードは「非古典論理」「数理論理学」といったとこだ。
まとまった解説がウェブには無い(記号が、紙媒体だと圧倒的に
見やすい)のと、ちょい高価だったりなので、そのテの本が
揃った図書館を確保できないと辛いかも。
岩波のそれは時相論理という論理の解説がメイン。
(線形論理も時相論理も様相論理といわれる論理の
一種)線形論理の解説書は一冊だけらしい。
IPSJ の学会誌とか研究報告が見れるんなら↓あたりが手頃そうだ。
ttp://www.ipsj.or.jp/members/Magazine/Jpn/3006/
ttp://www.ipsj.or.jp/members/SIGNotes/Jpn/22/1993/015/article012.html
0302デフォルトの名無しさん
NGNG>CleanとかMLとかは速いらしいのに!
non-strict な ML と、strict な Haskell を
比較すんなよ (;_;) せめて LazyML とか
0303291
NGNG国立奈良工業高等専門学校の先生のページに
論理型言語ですが時相と線形理論に関する論文載っていました。
ttp://kaminari.scitec.kobe-u.ac.jp/papers/index.html
少し判った気がします。
でも、これを如何いうふうに関数型言語に輸入すればいいのやら。
あと、下の本知っている人いますか?
線型論理入門 竹内 外史
ttp://www.amazon.co.jp/exec/obidos/ASIN/4535782148/
0304291
NGNG>岩波のそれは時相論理という論理の解説がメイン。
そうなんですか。買おうかな。
>IPSJ の学会誌とか研究報告が見れるんなら↓あたりが手頃そうだ。
学術誌は・・・。大学生のころは読めたのにね。
地元の大学言ってみような?如何しようかな?
0305デフォルトの名無しさん
NGNG逆
0306名無しさん@Emacs
NGNGCとC++
JavaとC#
PerlとRuby
他にもそういうの多いですがね。
0307デフォルトの名無しさん
NGNGそういう低次元な話にもっていくな。
0308302
NGNG>>306
別に、いがみあう必要ないじゃん。Standard ML では、
引数は適用される前に評価される、Haskell では、
普通はそうじゃない、ってダケの話。
他のヤツだって。.NET 使いたいなら C# 、
ケータイ用アプレットが作りたいなら Java とか、
現実、選択肢は広く持っていたほうが楽しいん
だからさ。
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGたぶん module 機構がソレ。
Haskell98 仕様書の 5 節、
じぇんとるいんとろの 11 節。
ttp://www.haskell.org/onlinereport/modules.html
ttp://www.haskell.org/tutorial/modules.html
0311デフォルトの名無しさん
NGNGあ、ほんとだ。サンクスコ
0312デフォルトの名無しさん
NGNGSMLでも遅延評価でますよね。
Hsakellほど積極的では無いですが。
0313デフォルトの名無しさん
NGNG>PerlとRuby
この変は似たもの同士だからだろ?
0314哲板過去ログから
NGNGhttp://mentai.2ch.net/philo/kako/996/996975732.html
114 名前: 考える名無しさん 投稿日: 02/03/08 02:04
「論理学」スレの過去ログから。
229 名前: 考える名無しさん 投稿日: 01/12/10 18:21
論理学の基本的教科書とは何ですか?
様相論理とか線形論理を一通り学びたいのですが。
英語のものでいいものを教えてください。
230 名前: ↑ 投稿日: 01/12/10 18:39
A.S. Troelstra, Lectures Linear Logic, CSLI Lecture Notes 29 (1991)
線形論理の入門書で、線形論理のゼロからを勉強できる本です。線形論理導入のモチベーシ
ョンから始まって、様々なヴァリエーションの線形論理とそれらの性質、代数的、圏論的モデル、
proofnetと、基本的な部分はかなり幅広くおさえてあり、そしてとても解りやすいです。しかも周辺
のトピックも広く紹介されているので、その辺を調べながら読めば、線形論理に限らず、証明論
の勉強になるのではないか、と思います。ただし、大きな問題は、GirardによるLinear Logicのオ
リジナル論文(その他、その後のLinear Logic関係のあらゆる論文)と記法が紛らわしい、というこ
と。嫌でも混同しやすいLinear Logicの記号なのに、同じ記号を別の意味で読み替えたりしなけ
ればならず、かなり厄介ですので、それは覚悟の上でどうぞ。
231 名前: ↑訂正 投稿日: 01/12/10 18:43
A.S. Troelstra, Lectures on Linear Logic, CSLI Lecture Notes 29 (1991)
http://www.amazon.co.jp/exec/obidos/ASIN/0937073784/
0315314続き
NGNG235 名前: 考える名無しさん 投稿日: 01/12/12 17:18
http://www.amazon.co.jp/exec/obidos/ASIN/0415126002/
をかいなさい。
242 名前: 考える名無しさん 投稿日: 02/01/06 15:37
>>229
いまどきならTroelstraとかHughes-Cresswell(古臭いっ)よりこっちがいい。
非古典論理を統一的に学べます.
http://www.amazon.co.jp/exec/obidos/ASIN/041521534X/
日本語なら小野寛晰先生の本がおすすめ。
244 名前: 考える名無しさん 投稿日: 02/01/10 02:32
>>242
おいおい、Hughes-Cresswell の第二版は 1996年に出たばかりだぞ。
なんかがらりとかわって別の本みたいになってると思ったけど、違うっけ?
今どきで、お手軽で様相論理絡みの非古典論理というなら、俺は、
http://www.amazon.co.jp/exec/obidos/ASIN/052179434X/
これをすすめたい。安いし、哲学の話もそれなりに多く書いてあるから、
この板の人向きと思うが。
0316291
NGNG私にとって言語(英語)の壁は厚いので
そんな立派な本は、ちょっと・・・
という感じです。
とりあえず「コンピュータサイエンス入門」と「線型論理入門」は買いました。
ゆっくり勉強したいと思います。
0317デフォルトの名無しさん
NGNGlinear logicの教科書まで読破する必要はないべ。(してもいいけど)
俺もlogicのほうは耳学問程度だが、linear typeのほうは
関連する研究で論文を発表できたぐらいには理解してる…つもり。
それよりもプログラム理論のお勉強のほうが重要かも。大堀先生の
「プログラミング言語の基礎理論」って教科書なんかどうだ。
線形型までいってないけど、それ以前に線形でない普通の型の理論を
理解しないと。
本を読むにしても、何も予備知識がないときついだろうから、以下で概説。
もし説明が下手で余計に混乱させちゃったらスマソ
0318317
NGNG言語によっていろいろと書き方は違うが、たとえばintだったら整数だし、
floatやrealだったら浮動小数だし、int -> floatだったら
整数から浮動小数への関数だし、int * floatとか(int, float)とかは
整数と浮動小数の組だし、要するに値を分類してるわけだ。
で、線形型ってのは普通の値の分類をもっと細かくして、
その値を使う「回数」の情報まで付け加えた型なんだ。
テキストだと書きづらいが、int ->1 floatとか
int ->0 floatとかint ->ω floatとか。
それぞれ、「1回だけ呼び出される関数」「決して呼び出されない関数」
「何回でも呼び出させる関数」の型。
0319317
NGNG・もう「決して使わない」ことがわかった値はゴミなので、ガベコレできる
・式の遅延評価をするときに、「1回しか使わない」とわかっている値は
後のために覚えなくても良いので、オーバーヘッドを減らせる
・逆に「必ず1回は評価される」ことがわかってる式は、そもそも
遅延評価しなくて良いので、やっぱりオーバーヘッドを減らせる
・同じように、「必ず1回は実行される」ことがわかってる副作用は、
(Haskellのモナドみたく)遅延しなくても良いので、MLみたく
その場で直ちに実行できる(?)
って感じ。最後のは俺がよく知らないので、Cleanとかに詳しい人がいたら
フォローをきぼんぬ。
0320Super Combinator
NGNG竹内外史の本はかなり手ごわい。
0321317
NGNG考慮した論理があって、linear typeも元々はそこから派生したそうな。
どんな論理かというと、よくある説明なんだが、
命題P = 「あなたは120円を持っている」
命題Q = 「コーラを買える」
命題R = 「お茶を買える」
とおいて、Pと「PならばQ」と「PならばR」の3つが成り立っているとする。
すると、普通の論理ならPを2回ほど使って「QかつR」を結論できてしまうわけだが、
120円でコーラとお茶の両方が買えるってのはおかしいよな。
だから、そういう「使ったらなくなる」ものを考えに入れて、
「命題Pは一回しか使えない」みたいな性質も考慮できるようにした論理が
linear logicというわけだ。上の例だと、Qを結論することはできるし、
それとは別個にRを結論することもできるが、「QかつR」を同時に
結論することはできない。
0322317
NGNG上のほうのWadlerのチュートリアルを読んでみるのが
(linear logicの教科書を読破するよりは)手っ取り早いと
思うんだが、どう? もちろん、特定の目的じゃなくて
一般教養としてなら、linear logicの勉強もいいかもしれないけど。
もし英語が苦手だと最初は大変かもしれんが、この手の
(わりと)新しい話を少しでも突っ込んで調べようと思ったら、
何でも英語は避けて通れないと思われ。っていうか、下手な
日本語の解説よりも、上手な英語の説明のほうがわかりやすいかと。
0323Super Combinator
NGNGそれがlinear logic。>>321みたいなのを特にresource logicと呼ぶことがある。
0324317
NGNG嘘を教わっているか、思い違いをしてそうなので、
例のInformation & Computationをのっとった、Girardの
オリジナルの論文を読むと吉かと思われ。
Girardの「しゃべる」英語は激しいフランス訛りで、
発表を聞いてても個人的に話をしても言ってることが
すげーわかりにくいが(笑)、上の論文はわりとわかりやすい。
0325覚え違いスマソ
NGNG正: Theoretical Computer Science
0326291
NGNGみなさんの親切なレスが貰えてうれしいです。
>>319
論文読んでもlinear typeの構造が判ったような気がするというレベル
で止まっていました。なるほど。
linear type関連の論文て意外と少ないような気がしたので、そのバックにある
linear logicを勉強すればlinear typeのことが判るかな?という安易な動機しか
なんですけどね。
でも記号の操作のしかた忘れたなー。完璧に。
あとCleanですか?Downはしてますけど、使ったとき無いです。
うーんCleanも勉強すべきなのかな?
0327291
NGNGこの本は持っています。
読んでいますし、3割ぐらいは理解しているつもりです。
型推論も基礎となるアイデアも理解しているつもりです。
>上のほうのWadlerのチュートリアルを読んでみるのが
「Linear types can change the World!」は読んでいます
(20ページ程度の文書なら、英語でも読む気がするんですがね。)
でも、この論文は、317さんの解説のやつとは少し違うかな?
0328293,301
NGNGWadler の解説に目を通してみました。World 型の
ような、捨てたり複製しちゃいけないとかいう値を
導入するための仕掛けが線形型ってことですね。
monad の解説 "Imperative functional programming"
の 4 節にある、評価順序を保証するためだけにある、
受け渡されるだけで値は運ばない変数 w を表面に
引っ張り出して活用する、という感じなのでしょうか。
↑これは激しく勘違いかも。
上の >>319 で説明されてるところは、Haskellコンパイラ
方面で研究されてる必須性解析やら更新回避解析やらを
プログラマが明示できる/しないといけない、と感じたん
ですが、どうでしょうか。
0329デフォルトの名無しさん
NGNGCleanってすごいですね。
ttp://sky.zero.ad.jp/~zaa54437/
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG0332デフォルトの名無しさん
NGNGしかたないからHTMLソース見てみたら…
><!--
>こういっちゃなんだけど、人のページのソースを見るのはどうかと思いますよ。
>そういう人は今後このサイトには来ないようにして下さい。ええ。
>-->
コワイヨー
0333332
NGNG初心者の僕にはとても勉強になりました。つーか、大堀先生の本が読めなくて
ちょっとへこんでたんですけど、書評読んだらすこし元気が出てきました。
がんばるぞー。
0334デフォルトの名無しさん
NGNGわかんなければソース見てもいいと思うぞ。勉強になる。
あっちが見られる様な媒体で見られたくないものを置いている方が悪いんだから。
0335デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/0201882957/
未だ全部読んでないのに、
Haskell:the Craft of Functional Programming
の第三版が出ちゃった!
……と思ったら日付が、
0336デフォルトの名無しさん
NGNG二度と見に行くかよ、と思わせるためにやってるとすれば、
とっても効果的だ。
0337デフォルトの名無しさん
NGNG俺も一瞬そう思った
0338デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNGすぐに出せるようにと思ったんで、
今後の更新予定とかをコメントでつけてましたが、
それらは全部削除しました。
まあ確かにそんなものをつけるべきではないのかもしれませんね。
-->
コメント変わった?
ここ読んでる?
0340デフォルトの名無しさん
NGNGの書き込みは要するに自作自演書き込みって事でしょ。
0341デフォルトの名無しさん
NGNG0342デフォルトの名無しさん
NGNG削除した理由が、
「まあ確かにそんなものをつけるべきではないのかもしれませんね。」
誰かに注意を受けたと取るのが一番か。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG0345デフォルトの名無しさん
NGNG自作自演とか、偉そうにWeb作ってるのはイクナイ。
0346デフォルトの名無しさん
NGNGとか書くと、これも自作自演と勘違いされるのだろうか?
>偉そうにWeb作ってるのはイクナイ
作っている分だけ偉いです。
ヒガミはイケナイネ。
0347デフォルトの名無しさん
NGNGCleanってば名前しか知らなかったので、ページ作ってくれたのは非常に
よろしいと思う。イイ。
だけど、自分の理解が怪しいこととかまで、無理して書いてないかの?
斜めにしか読んでないが、なんか外してるところがある気がちょっとする。
>>339とかもどうかと思われ。
0348デフォルトの名無しさん
NGNG0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNGGalois Connections
http://www.galconn.com/
0351デフォルトの名無しさん
NGNG「本書の内容の正否・当否についての質問・意見は、明確で
具体的な理由をつけて、匿名ではなく、[email protected] まで
お願いします。また、これら以外のことに関する本書への
批判・評論は刑法230条又は231条等に触れる恐れがあり
ますのであくまでも自己責任でお願い致します。」
とでも、表 2 カバー裏あたりに書いとけば良いかも :-)
0352デフォルトの名無しさん
NGNGなんだそれは。
Cleanのページ作った人ですか?
突っ込まれたから、ぼやいている?
Haskellのページとかschemeのページは前からあるけど、
だれも苦情は言わないし、ありがとうしか言わない・・ですが?
0353デフォルトの名無しさん
NGNG具体的な理由をつけて、匿名ではなく、[email protected] まで
お願いします。また、これら以外のことに関する著作者への
批判・評論は刑法230条又は231条等に触れる恐れがあり
ますのであくまでも自己責任でお願い致します。」
こうだな、正確には。
0354デフォルトの名無しさん
NGNGバイアスかけるのは止めてね
Haskellのスレだし。
0355デフォルトの名無しさん
NGNGおまえ私怨か?
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNG0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNGぼやきか・・・
それはもしかしたらイタイ発言ではなかろうか
0361332
NGNGもう夏休みに入ってるって事をすっかり忘れてました。
0362デフォルトの名無しさん
NGNGお前のような万年厨も問題だがな
0363デフォルトの名無しさん
NGNGハー。
人の振り見て・・・ということで。
0364デフォルトの名無しさん
NGNG厨
0365石敢當
NGNG0366デフォルトの名無しさん
NGNG母さんソース
0367デフォルトの名無しさん
NGNG出版してくれよな。
0368デフォルトの名無しさん
NGNG最初のころはHaskellスレ限定コテハンも何人かいて妙にまたーりとしていた
気がするのだが、最近廃れっぷりが激しいな。最初のころのような勢いも無いし。
懐 古 う ざ い
よね。
すまん。逝ってくる。
0369デフォルトの名無しさん
NGNG誰かお遊びで作ったプログラムとか貼ってくれませんか?
0370デフォルトの名無しさん
NGNGHaskellでクイックソートのコードを以前見かけて、こんなにシンプルになるのかと感動しました。
では、バブルソート(二重for文で大小比較の単純なやつ)はどうなるのでしょうか。
iとjを引数にして二重に再帰を繰り返し、takeやdropで切り貼りするしか無いのでしょうか?
もっと効率のいいやり方があるのでは、と思うのですが…
0371デフォルトの名無しさん
NGNGそれらしいものを書いてみようとしたら
選択ソートとバブルソートが混ざったような中途半端なものになった。
bubbleSort :: Ord a => [a] -> [a]
bubbleSort xs = bs xs []
bs [] _ = []
bs [x] rest = x : bs rest []
bs (x1:x2:xs) rest = bs (min x1 x2 : xs) (max x1 x2 : rest)
つか効率を気にすればするほど選択ソートっぽくなると思う。
0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG0375370
NGNG最小値を取り出して、それを x : bs rest [] で先頭に結合しているわけですか。
bs xs i j なんて関数を作って手続き型そのままにやろうとした俺とはえらい違いです。敬服。
0376370
NGNG>>371のコードですと、要素数に比例してスタックを消費してしまいませんか?
(半端な知識ですが、末尾再帰になってなく見えます。書き直せないところが厨ですが…)
関数型言語の場合、スタック消費は気にしない方がいいのでしょうか。
0377デフォルトの名無しさん
NGNG関数型言語では基本データ構造のリストが再帰的(末尾再帰ではない)に
定義されているわけで、そもそもスタックを消費しまくることを前提に
作られているでしょうから、スタックの消費をあまり気にしなくていい言語と
して使えるはず。
Haskell のような遅延評価が基本の言語では、自然な再帰のアルゴリズムの
プログラムを、末尾再帰のアルゴリズムのプログラムに書き換えることも、
計算のオーダーが変わるようなもの以外は、あまり、気にすることはない
気がします。
0378デフォルトの名無しさん
NGNGこの最後のSはどっからでてきたの?X,Y,Z,W,Vとかでいいじゃん。
Sなんてつけなくても
0379デフォルトの名無しさん
NGNG複数形のsです。
0380日曜Haskellerオヤジ
NGNG現在はプログラミング基礎論の勉強がてら一緒に Haskell もお勉強モードな土日です。
>>368
特に初心者がやるときには、英語を勉強しつつ Haskell の勉強もしようとすると
忙しくなりすぎて、とりわけ社会人だと極度のんびり勉強モードになってしまいます。
そうすると、どうしてもネタが尽き気味になりますよね、
和書の入門書がぜひとも欲しいところです。
大学院の学生さんたちの誰かが執筆してくれればいいんですが、だれか書きませんかね?
Haskell は離散数学とか圏論とかとセットにすると非常に面白い本ができると思うのですがどうでしょう?
あと、圏論の専門本も是非とも欲しいところですね、これも本当にない、
まったくと言って良いほど本がない、あっても絶版ばかりで手に入りません。
シュプリンガーフェアラーク出版の「代数学とは何か」に書かれてあるのが、
手に入りかつ、知っている範囲なのですが、
これは数学の専門書でプログラマには少々というかかなりの難解ぶりです。
自分がなんとか読めそうと感じられる範囲では、
ここ http://www.etl.go.jp/etl/divisions/~yoshiki/ut97/
にあるんですが、これも内容を充実して製本された本が欲しいところです。
初心者向きといえば、以前工科大のページがあったんですが
消滅してしまっているようです、越田センセまた何かページつくってくれないかな・・
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNGはぎゃー先生のページ面白い
0383yuki
NGNGすみません。初心者なのですがこんな質問に誰か答えていただけるのでしょうか?
function type は
[Key] -> [Token] -> [(Field, Value)]
type Token = String
type Field = String
type Value = String
type Key = String
Key で Token を検索して、結果があればFieldとValueでOutput すると言う
ファンクションです。例えば、
[key] = ["Name","Title","Address"]
[Token]="Name",":","Yamada","Taroh",";","Title",":","Mr",";","Address",":","Tokyo","Shinjuku",";"]
output
[("Name","Yamada Taroh"),("Title","Mr"),("Address","Tokyo Shinjuku")]
になります。
TokenのArrayの中で、Fieldのあとは必ず ':', Valueのあとは ';'
になってます。それと、outputのfieldは単語ごとにスペースでくぎられた1つのstringになります。
誰か、アイデアでもいいので下さい。
すみません何分初心者なもので。 レスお待ちしてます。
=======================================================================
0384デフォルトの名無しさん
NGNGその区切り線には宗教的意味か何かでもあるのか?
0385デフォルトの名無しさん
NGNG宿題は自分でやりましょうね。
0386デフォルトの名無しさん
NGNG学校の授業でどのくらい使われてるの?
0387日曜Haskellerオヤジ
NGNG私だったらこんな感じで作りますかね。
見ているとスペースのところで文字列が切断されていて非常に感じが悪いのでそれをまず結合します。
つづいてこの文字列リストから ":" , ";" を取り除いて出来上がり
0388日曜Haskellerオヤジ
NGNG結合すべき文字列は直後が ";" ":" でないことに着目すると簡単に作れるでしょう。
0389383
NGNG「Haskell言語プログラミングレッスン <下> 関数型言語を始めよう」
出版準備です。
0390デフォルトの名無しさん
NGNG0391デフォルトの名無しさん
NGNG0392日曜Haskellerオヤジ
NGNGレコードみたいになっていますね ';' ':' ブラウザはの見分けがつかない
間違っているので上記2レスは無しということでお願いします
';' でいったん文字列リストのそのまたリストに分解して
先頭を順序対の左
上記を取り除いた上での、先頭と末尾を取り除いた文字列の結合を右の順序対として
リストを作ればよいみたいですね。
0393日曜Haskellerオヤジ
NGNG本当ならうれしいですね、ちょっと作ってみましょう、しばらくかかります。
0394デフォルトの名無しさん
NGNGtype Assoc = [(Field, Value)]
lookupAssoc :: [Key] -> Assoc -> Assoc
をつくれ、としたほうが抽象化のレベルがあうのでないか。まあ、
parseAssoc :: [Token] -> Assoc
をつくって
lookupTokens :: [Key] -> [Token] -> [(Field, Value)]
lookupTokens keys tokens = lookupAssoc keys (parseAssoc tokens)
とすれば元の題意にはあうだろうが。
0395デフォルトの名無しさん
NGNG題名的には上下逆だろ。
0396日曜Haskellerオヤジ
NGNG本できたら、このスレッドに報告してくださいね、買います。
type Token = String
type Key = String
type Field = String
type Value = String
hoge_key = [ "Name" , "Title" , "Address" ]
hoge_token = [ "Name" , ":" , "Yamada" , "Taroh" , ";" , "Title" , ":" , "Mr" , ";" , "Address" , ":" , "Tokyo" , "Shinjuku" , ";" ]
-- ここが本体
func :: [Key] -> [Token] -> [(Field, Value)]
func k t = receive [] t
where
receive xcomplete remain
| remain == [] = xcomplete -- 全部完了
| nokey = receive xcomplete raw_recs -- キー無し
| otherwise = receive (rec:xcomplete) raw_recs -- 成功
where
-- 先頭レコードのその以外のレコードの定義
( raw_rec , raw_recs ) = sprit_records remain
-- キーと ':' と結合前の値のリスト定義
-- 必要ならコロンのチェックをすること
( key : ( colon : value_token ) ) = raw_rec
-- キーがあるかどうかの定義
nokey = (has_member k key) == False
-- 値の定義
value = cat_value value_token
-- 整形済みレコード
rec = ( key , value )
0397日曜Haskellerオヤジ
NGNG-- トークン分解と ';' の取り除き
-- 末尾 ';' チェックはしていないので必要なら無限再帰防止策をとること
sprit_records :: [Token] -> ( [Token] , [Token] )
sprit_records token = receive ( [] , token )
where
receive ( x , (y:ys) )
| y == ";" = ( x , ys )
| otherwise = receive ( x ++ [y] , ys )
-- 空白を入れながら文字列の結合をする
cat_value (x:xs) = receive x xs
where
receive complete remain
| remain == [] = complete
| otherwise = receive ( complete ++ " " ++ x ) xs
where
(x:xs) = remain
-- キー名があるかどうかチェック
has_member (key:keys) x
| x == key = True
| keys /= [] = has_member keys x
| otherwise = False
0398383
NGNGなんか、本を出すことで盛り上がってるみたいなのですが。。
すみません、>389 は私ではないです。誰かがネタでやったみたいです。
なのに、期待して答えて頂いて感謝してます。
それと、すぐ宿題ってばれましたね(苦笑)。事実、海外でITを勉強してる学生です。
これはアサイメントで来週提出で7問中、1問だけとけてる状態です。そして、苦肉の策で
このスレに質問をしてみました。そして、みなさんにヒントを頂き感謝してます。
みなさんはかなりの知識をお持ちのようで、私なんてJAVAの教科は自分では得意だと
思ってやってましたが、haskelになると途端にややこしくなり、自分の頭の悪さを、思い知らされてます。
数学の知識がさらに必要となってきてますね。
日曜Haskellerオヤジ さん、参考になりました。ありがとうございます。
ついでにこのアサイメントの全容を貼っときました。(期待しつつ)。自分でやるつもりです。
海外は教科をパスするのがきついですね。
http://www7.big.or.jp/~mb2/bbs/up/img-box/img20020820192929.zip
また、質問があればさせていただいていいですか?
お礼のレス遅れてしまってすみません。なんか、私の使ってるプロバ、規制されてるんです。うー
だから、友人にメールで送って、それからレスしてもらってるので。すみません。荒らしではないですよ。
0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNGhogehoge ks ts
= filter (\ (k,v) -> elem k ks) $ map hogera $ hoge ts
where
hoge [] = []
hoge ts = case break (";" ==) ts of
(_,[]) -> [ts]
(xs,_:ys) -> xs : hoge ys
hogera ls = case break (":" ==) ls of
(_,[]) -> (unwords ls, "")
(x,_:y) -> (unwords x, unwords y)
0401デフォルトの名無しさん
NGNG0402日曜Haskellerオヤジ
NGNGやっぱりそうか(笑)
関数型は脳の回路がスイッチしないとやっぱり大変です、
普段の仕事では普通の言語を使っているので、土日に関数型に切り替えると毎週のように戸惑います。
JAVA 等で使われているオブジェクト指向的な考え方が頭の中に残っているとうまく組めません。
関数型プログラムのコツは写像を追うことと、
自分が欲しい結果を細部に分解しながら欲しいものを定義してゆくことだと思います。
しかし、これは考えても無駄で、なれるしかないです
>また、質問があればさせていただいていいですか?
どうぞ、このスレッドは最近ずっと寂れていたようですし、私が答えなくても
だれかが答えてくれると思いますし、私も書いてみます。
#ダウンロードしようと思いましたが、ファイルはもうアップローダーに残っていないみたいです。
0403デフォルトの名無しさん
NGNG1. 次の関数
g v [v1, ..., vn,":"]++xs=(v++" "++v1++" "++...++" "++vn,f xs)
を作りましょう。
2. gを使って関数fを定義します。関数fは、もしnがリストkに現れていたら
f [n,";",v1, ..., vn,":"]++xs = (n,v1++" "++...++" "++vn):f xs
そうじゃなかったらf xsを返します。fの定義はkのスコープの中で行われるものとします。
3. 最後に二つの関数をまとめてansを作りましょう。ansはキーのリストとトークンのリストをとり、
f,gを内部で定義してfにトークンのリストを渡します。
宿題の答えを書くのもアレなので、こういうかたちにしてみました。
0404デフォルトの名無しさん
NGNG> 2. gを使って関数fを定義します。関数fは、もしnがリストkに現れていたら
2. gを使って関数fを定義します。関数fは、もしnがキーのリストkに現れていたら
でした。舌足らずですた。
0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG0407日曜Haskellerオヤジ
NGNGん、お盆休み明けてのぞいてみれば、だれもレスを付けていないのか・・・
今週末ちょっと考えて見ます。
0408日曜Haskellerオヤジ
NGNGちょっと読んでみたんですが、正直題意が良くわからなかったです。
これはレスつけられないのでは、と思いました。
出題は、宿題のパターンでよいとは思います。ただし、宿題は自分の良心で自分でやりましょうね。(笑
ちなみに、引数に使ったラベルに意味説明を入れたほうが良いと思います。
いきなり v とか v1 とかで説明されてもわかりにくいです。
v1 v2 ... は入力トークンで、末尾は ":" です、
そのリストを [v1 , ... vn , ":" ] とします。
みたいな感じで書いた方がよいのではないかと感じました。
v はキー・・・・なんでしょうか?
あと、2については、 f の中に g が見当たりません。
( v ++ " "++v1++" "++...++" "++vn,f xs) = (n,v1++" "++...++" "++vn)
なんでしょうか?
0409デフォルトの名無しさん
NGNGどういうところで使われてるか不思議で。shcemeとかは
dr schemeのチュートリアルで結構仕事があるみたいなことを
書いてあったけど。
0410デフォルトの名無しさん
NGNG学校
0411デフォルトの名無しさん
NGNG(小)
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNGそこでいう setter って x {foo = "chample"} みたいなのじゃないんすか?
data Foo = Coo { foo :: String, bar :: Integer} deriving Show
x = Coo { foo = "sample", bar = 12345 } -- 初期化
main = print x >> print (x {foo = "chample"})
と、こんなところで半年近くも前の話に質問をしてみるテスト。
0414デフォルトの名無しさん
NGNG君はこういう (http://www.bier-reise.com/cooking/recipe/go-ya/chample.htm)
つもりなのかもしれんが、"チャンプル" でなく "チャンプルー" と伸ばすこともあり、
chample よりは champloo って書くべきものなのだよ。
0415デフォルトの名無しさん
NGNGなんだそれは。
0416デフォルトの名無しさん
NGNG七行プログラミング part2
http://pc3.2ch.net/test/read.cgi/tech/1018840143/
に乱入して、関数型言語の恐ろしさを見せつけてやりませんか?
Haskellなら相当な事が出来そうですが(今↑ではやりのRLEとかも)
0417デフォルトの名無しさん
NGNG0418デフォルトの名無しさん
NGNG大して戦果をあげれないと思う。入出力とか弱いし。
Haskell 向きなのを何か考えればアレかもしれんが。
0419デフォルトの名無しさん
NGNG0420
NGNG0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNG0423司馬乱
NGNG久しぶりにこのスレ覗いてみたら寂れてますねー.
コンピュータサイエンス向けの日本語の易しい圏論の本って需要あるのかな?
0424日曜Haskellerオヤジ
NGNG>コンピュータサイエンス向けの日本語の易しい圏論の本って需要あるのかな?
取り合えず私にはあります、だれか作ってー
離散数学に興味を持ったところ、そのまま勢いでこれも面白くなってきています。
もっとも、一般位相はしらないわ、集合論はしらないわで大変ですが・・・
Haskell という言語はこういうものを勉強するときに便利ですね。
0426石敢當
NGNGなぜコンピュータサイエンスに圏論なのか、圏論を勉強すると
プログラムを作成するにあたりどんな嬉しいことがあるのか、
などについて序章あたりに書かれているような本だったら買いたいです。
英語で書かれたのを1冊持っていますが、なかなか読み進めません。
ありがたみを実感できる章にたどり着けばはずみがつくと思うのですが・・。
0427デフォルトの名無しさん
NGNGその本とはなんでしょう?
さしつかえなければ教えてください。
0428デフォルトの名無しさん
NGNG情報数学講座7 プログラム意味論 横内寛文 共立出版 1994.6
それにしてもプログラミング処理系は、実用的にするため色々な拡張が施され
ています。そのため純粋な数学との間には大きな溝が出来てしまってい
るような気がします。
0429デフォルトの名無しさん
NGNG分かるようになるかも。
0430デフォルトの名無しさん
NGNG0431石敢當
NGNGBird & de Moor の "Algebra of Programming" です。
0432司馬乱
NGNG論理や型理論と一緒にやる方がいいと思いますが(代数は等式論理なので)
どうやって動機付けするのがいいのかな.
圏論には多分
- プログラムの意味論を厳密に議論するための言葉を提供してくれる
- 様々なプログラミングのメタファーを提供してくれる
という二つの面があると思いますが,お互いに依存しあっているので
最後まで引っ張っていく書き方というのは結構challengingかも.
きちんと書くと今度は厚くなりそうだし.
0433司馬乱
NGNGたしかallegoryとか使っているやつですか?
0434石敢當
NGNGはい、そうです。
>>きちんと書くと今度は厚くなりそうだし.
執筆する側としては厚い本を書くのは大変だと思いますが、
読む側としては多少厚くても難解な薄い本よりはずっと
ありがたいです。もっとも、431の本をなかなか読み進めない
一番の理由は十分な間を取れていないからで、難解とか言う
以前の問題です。
0435デフォルトの名無しさん
NGNGというような会話を、約10年程前にしてたんですけど、
相変わらずそのスジでは必須科目(wなのですか?
0436デフォルトの名無しさん
NGNG0437日曜Haskellerオヤジ
NGNG圏論というのは、集合論の代わりになるもので、集合論が「要素」の論理
であるのに対して、圏論は「要素」と「要素」の間の関係の論理です。
集合論を置き換える為の物のようです。( 多分(^^; )
圏論って定義は分るんですけれど、その意味しているところは難解です、いまだに分りません。
しかも定義も注意深く定義を読まないと、いきなり変なところにはまり込んでしまいます。
私は ob(C) が「点」とか書かれていて最初こんがらがっていました。
ついでに射も最初はこんがらがってました。
#といいますか、全部だ・・・
もし分らないのが圏論の定義なら
しょうもない集合でいいので一個具体的に作ってみると少しづつ分ってきます。
たとえば { {false,true} , {0,1} } = ob(C) から出発して
全部作ってみるといいですよ。
#ちかごの感じるんですが
# 圏論 : 関数型
# 集合 : オブジェクト指向
#「点」が中心の時がよいのか「射」が中心の時がよいのか
#時々強烈に的確に記述できる関数型の特徴の正体が見えたような見えないような・・・
0438デフォルトの名無しさん
NGNG集合論:構成的(実装を扱う)
圏論:公理的(インターフェースを扱う)
射の位相空間での実装は連続写像、群での実装は準同型写像って感じ。
インターフェースのみを使って記述すれば、そのインターフェースを
持っているどんな実装でも成り立つものを作ることができる。
また、インターフェースを前に出すことで、性質を明確に記述でき、
性質の比較ができる。
などのことが、圏論のメリットと感じます。
コンピュータサイエンスで圏論がどう使われているのかは知りませんが。
いや、数学でもあまり知らないんだけど。
0440デフォルトの名無しさん
NGNGテンキーの'/'が効かないのはなぜ?
0441日曜Haskellerオヤジ
NGNGチュートリアルとしては最適と思います、私もこれを使っておぽえました。
http://www.teu.ac.jp/kougi/koshida/Prog6/index.html
0442デフォルトの名無しさん
NGNG0443デフォルトの名無しさん
NGNGなにそれ?
0444デフォルトの名無しさん
NGNG若者向けのLisp
0445デフォルトの名無しさん
NGNG若者向けのLisp
0446デフォルトの名無しさん
NGNG0447デフォルトの名無しさん
NGNG0448442
NGNG公式のドキュメント読んでもいまいちだったけど、
これ読んだらけっこうすんなり入ってきました。
東京工科の学生には負けられません。
0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNG0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG最近はヘタなキー押すとサスペンドしたりユーザー切り替わったりするらすいな。
なんでこれ以上ボタン増やしたがるのかわからんよ。
0453442
NGNG0454名無しさん@Emacs
NGNGfibStep :: (Integer, Integer) -> (Integer, Integer)
fibStep (u, v) = (v, u+v)
fibPair :: Int -> (Integer, Integer)
fibPair n
| n == 0 = (0, 1)
| otherwise = fibStep (fibPair (n-1))
nacchi :: Integer -> Integer
nacchi = fst . fibPair
このnacchi関数サイコー!
ところでIntegerは最高何桁まで扱えるんでしょうか?
nacchi 10000 ぐらいまでは余裕みたいですが。
0455デフォルトの名無しさん
NGNG(略
0456名無しさん@Emacs
NGNGかなり汚いです。だれかスッキリした正解を教えて下さい。
maxOccursTwo :: Int -> Int -> (Int, Int)
maxOccursTwo a b
| a > b = (a, 1)
| a == b = (a, 2)
| otherwise = (b, 1)
maxThreeAux :: Int -> (Int, Int) -> (Int, Int)
maxThreeAux a (b, c)
| a == b = (a, c + 1)
| a > b = (a, 1)
| a < b = (b, c)
maxOccursThree :: Int -> Int -> Int -> (Int, Int)
maxOccursThree a b c =
maxThreeAux a (maxOccursTwo b c)
0457名無しさん@Emacs
NGNGinnerfunc :: Int -> Int -> [Int]
innerfunc num op
| op == 0 = []
| num `mod` op == 0 = innerfunc num (op-1) ++ [op]
| otherwise = innerfunc num (op-1)
divisors :: Int -> [Int]
divisors num
| num <= 0 = []
| otherwise = innerfunc num num
これでリストに要素を追加しようと思い":"を使おうと
思ったのですが、これの型はa -> [a] ->[a]
なので使うことができません。
[a] -> a ->[a]という型の関数はないんでしょうか?
[op]っていう書き方がなんとなくダサい気がします。
そういう関数は組込みであるんでしょうか?
というか組込み関数一覧みたいなのってどっかにありません?
0458名無しさん@Emacs
NGNGisPrime :: Int -> Bool
isPrime num
| num <= 2 = False
| length (divisors num) > 2 = False
| otherwise = True
なんとなくHaskellが楽しくなってきました。
東京工科大のやつらがうらやましひです。。。
早くIO使った実用的アプリを作れるところまでいきたいのぉ
0459名無しさん@Emacs
NGNGhugs上で
>:type "abc"
"abc" :: String
>:type ["abc"]
["abc"] :: [[Char]]
となってしまいます。本当は[String]となって欲しいわけですが、
Charのリストのリストになってしまうんですね。
どうしてなんでしょう? そこで、
>:type ["abc"::String]とかやってみてもダメですね。[[Char]]になります。
:type 1::Intならうまくいくんですが。。。
0460デフォルトの名無しさん
NGNGhttp://www.haskell.org/onlinereport/basic.html#characters
↑を見てみればわかるように言語仕様で
type String = [Char]
というセマンティクスが規定されてる.
0461名無しさん@Emacs
NGNGCharとStringの扱いですが、なかなか難しいですね。
おなじくhugs上で
>("aaa","b") == ("aaa", 'b')
というのはもちろんエラーになるわけですが、
Stringとなって欲しいようなところで[Char]と評価されて
しまうので。。。
チュートリアルの図書館データベースの問題で、
type Person = String
type Book = String
type Record = (Person, Book)
-- 図書の返却を行う関数
isData :: Record -> Record -> Bool
isData record1 record2
= record1 /= record2
returnLoan :: Database -> Person -> Book -> Database
returnLoan remove_person remove_book
= [ record | record <- exampleBase, isData record (remove_person, remove_book)]
これだと
ERROR "library.hs":54 - Type error in application
*** Expression : isData record (remove_person,remove_book)
*** Term : (remove_person,remove_book)
*** Type : ([([Char],[Char])],[Char])
*** Does not match : ([Char],[Char])
というエラーが出ます。んー、わからんです。
0462名無しさん@Emacs
NGNGでした。すんません。
0463名無しさん@Emacs
NGNG○returnLoan exampleBase remove_person remove_book
でした。質問忘れてください。m( )m
0464名無しさん@Emacs
NGNGもっとCやPerlと比べて難しいかと思っていたら
そうでもなかった。二日である程度慣れました。
ループを一切使わずに全て再帰で書くのは
なれないうちはしんどそうだけど、見返りとして
バグの出にくいプログラムになるのかな。
これがすらすら書けるようになったら
この言語で仕事してみたいですね。
手っ取り早くHaskellを活用できる分野というと
XMLの処理系でしょうか。
Haskellについてはまだよくは分っていませんが(藁)
他の言語より向いている気がするんですね。
もっとフォーマルなプログラムにおいてこそ
こういった言語は意味をなすのかもしれないけど、
多分そういうのはヘタレには無理だろうし(w
とりあえず、IO、スレッドが使えるまで基礎勉強ですね。
無料で使わせてもらっていて、講義より先に
問題に関する質問をここに書いてしまっては
先生に申し訳ないのでここらへんでやめにしておきます。
先生には入門者用の本を書いてほしいなあ。
0465デフォルトの名無しさん
NGNGIBMのdeveloperWorksサイトに、HaskellでXMLを云々って記事が有ったね。
既出だろうけど。
0466名無しさん@Emacs
NGNGなるほど、それでかな。
Haskellを使ってみる前からXMLの処理には
関数型言語が向いている気がしてたんです。
ただ単に自分が以前DWを読んだだけだったのですね(汗
関数型言語初体験の感想としてなんですが、
JavaやC++ではいかようにも書けてしまうのが
むしろあまりよくないことに思えてきました。
アルゴリズムを素直に表現してそれがそのまま
プログラムになっているという。素晴らしいです。
久しぶりに萌え萌えです。
もっと綺麗に書けるよう努力せないかんですね。
0467名無しさん@Emacs
NGNG2chに神が君臨したかのようなレベルですね(汗
自分の書き込みが恥かしくなって来たのでしばらく潜伏します。
早くみなさんのレベルに追いつきたひ。。。
これだけじゃ情報価値なしなのでせめてリンク
純粋遅延関数型言語 Concurrent Clean
http://sky.zero.ad.jp/~zaa54437/programming/clean/
このサイトの書評は私のような初心者には参考になりそうです。
また管理者の人はCleanシステムのドキュメントの翻訳を精力的に
行われています。素晴らしいです。
0468デフォルトの名無しさん
NGNG0469デフォルトの名無しさん
NGNGなんか信じられないんだけど、あれより簡単なドキュメントって
英語じゃみたことないよ。
0471デフォルトの名無しさん
NGNGhttp://research.microsoft.com/Users/simonpj/papers/meta-haskell/
というかAlexandrescuに触発されたとか。。
0472デフォルトの名無しさん
NGNG関数型言語でXMLを扱う例としてこんなのがあります。
http://xduce.sourceforge.net/
メインの開発者は日本人です。
実装はHaskellじゃなくてMLだけど。
0473デフォルトの名無しさん
NGNG0474デフォルトの名無しさん
NGNGghcのソースコード見ても殆ど使ってないんだけど、、、
C++がめんどくさくなるとという理由から敬遠されるのと
同じような理由で型クラスも使われてないとか?
0475460
NGNG(6.3 Standard Haskell Classes)の図にある如く
言語仕様で定義されてる基本型からして使いまくりですが? >>474
0476デフォルトの名無しさん
NGNGう
0477デフォルトの名無しさん
NGNG他に良い方法無いの?(Haskell固有の話じゃなくて)
0478デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNGこれだけで解決?
>>478
あなたも一緒に考えましょうよ。
0481デフォルトの名無しさん
NGNG・lazyなストリームとみなす。
・continuationを使う。
0482デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
NGNG0484480
NGNGその2つの方法もありますね。
でも古典的(あまり普及できない)方法なのでは?
0485名無しさん@Meadow
NGNG> そもそもLazyなのがいけないんだろ
‥‥‥誰もつっこまないのか。
っつうかオレ釣られた?
0486デフォルトの名無しさん
NGNG嫌いじゃないんだけど、導入の旨みが苦労に勝っていると証明できないんで、
最近はLazyにも個人的に放置気味…。>Lazy Evaluation
代わりにという訳でもないが最近は部分評価野郎になってまつ。
(その上、HaskellどころかJava野郎に成り下がってまつ(w。)
0488デフォルトの名無しさん
NGNGLazyが悪い訳じゃないのに・・・・
>>477
他にも色々なアンサーがありますよ。時制理論とね。
透明参照性を保つためには、時間とか状況とかを導入すれば良い。
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGもちろん悪くはないんだ。漏れも個人的には好きだ。
ただ好みの問題を越えて、
実装の苦労と実行効率を補ってなお十分にいいと言い得るかが問題…。
0491デフォルトの名無しさん
NGNG実行速度も、もちろん気になるので言語に新しい要素を導入するときは
慎重にするべきですね。
でも構文で制限かければ良いような
もしくは処理系のanalysisによる最適化(正格性判断による末尾再帰とかね)
とかで何とかなりそうな気もします。
だれか何とかして。
0492デフォルトの名無しさん
NGNGhttp://haskell.org/hugs/
0493デフォルトの名無しさん
NGNGWe are pleased to announce a new major release of Hugs98. The most important features of this release are:
・ Much improved FFI support (contributed by Alastair Reid), bringing Hugs really very close to the Haskell
FFI specification.
・ Adoption of a significant subset of GHC's hierarchical libraries (contributed by Ross Paterson).
・ An (allegedly) complete implementation of the Haskell98 module system (Sigbjorn Finne).
Most reported bugs have also been fixed; however, some issues still remain. See Hugs Bugs & Features for
further information.
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNGバージョンアップしてもテンキーの"/"は効かないままな模様(Winhugs on W2k)
つーか日本語キーボードじゃないと再現しなくて
開発元は気づいてないなんてオチじゃないだろうな。
英語キーボード持ちの人だれか試してプリーズ。
0496デフォルトの名無しさん
NGNG漏れは英語キーボードだが。
日本語OSでしか再現しないのか?
0498デフォルトの名無しさん
NGNGアクセス権の設定とか。
0499デフォルトの名無しさん
NGNGlispとhaskellとocamlの
メリットデメリットを教えてください。
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNG全然分からない・・・。
誰かお助けを〜
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNGhttp://www.haskell.org/ghc/
0506デフォルトの名無しさん
NGNGUNIX指向なんでつか?
0507デフォルトの名無しさん
NGNG0508506
NGNG0509デフォルトの名無しさん
NGNGもともとグラスゴ大のプロジェクトで,
大学の研究者を MSR が引っこ抜いてきて,
継続してる研究だからってかんじか.
ってゆ〜か MSR ってマジで全く何の要求も
されない,ってウワサっすけど,本当?
個人的に一番参照してるサイモン博士の頁は↓だったりするが.
ttp://research.microsoft.com/~simonpj/win32-cheat.html
0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNGttp://www*haskell.org/ghc/docs/latest/html/building/winbuild.html
彼らが常用してる開発環境が↑の Windows ビルド用環境ではない,
というだけかな,と.
0512デフォルトの名無しさん
NGNG>新しいhugsにはwinhugsはついてないの?
オレも見つけられない。どこにあるの?
0513デフォルトの名無しさん
NGNG>Emacs in Haskell の計画
これはネタですか?こんなことやってる人いるのかな?
0514デフォルトの名無しさん
NGNG↑これのどこが面白いのか、誰かひとつ解説してくれ。
0515デフォルトの名無しさん
NGNG無理にでも笑いなさい。
0516デフォルトの名無しさん
NGNG質問なんですが、これってなんていう本だか分かりますか?
おそらく、Haskell:the Craft of Functional Programmingの和訳だと思われるのですが……
検索しても出てこないもので……
0517デフォルトの名無しさん
NGNG前の年には毎回配ってたプリントを,次の年は一括して印刷・
簡易製本とかいうパターンって結構あるから
0518デフォルトの名無しさん
NGNG0519IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG困るのは厨くらいだろ?
0522デフォルトの名無しさん
NGNGどのIPがどの垢かは、ISPが記録してます。
だから、悪い事すればモデムだろとADSLだろうと捕まりますよ。
0523ぶん
NGNGconcatenate([],List,List).
concatenate([Head | This Tail],List,[Head | That Tail]):-
concatenate(This Tail,List,That Tail).
sort([],[]).
sort([Head|[]],[Head]).
sort([Head|[THead|[]]],Result):-
Head <= THead, concatenate([Head],[THead],Result).
sort([Head|[THead|[]]],Result):-
Head > THead, concatenate([THead],[Head],Result).
sort([First|[second|Tail]],Result):-
First <= Second,
concatenate([Second],Tail,Temp),
[First|RTail]=Result,
sort(Temp,RTail).
sort([First|[second|Tail]],Result):-
First>second,
concatenate([First],Tail,Temp),
[Second|RTail]=Result,
sort(Temp,RTail).
それで、これをどう繰り返せばいいのかがわからないのです。何かわかる人がいたら教えて下さい。
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0527デフォルトの名無しさん
NGNGhttp://www.skipup.com/~niwatori/keijiban.htm
>728 ( ´∀`)σ)Д`) プニ
0528デフォルトの名無しさん
NGNGでも物事はだんだんエスカレートしていく物、そのうち密告とかも「誹謗中傷」として
IPを渡すようになる、、、
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGhttp://live2.2ch.net/test/read.cgi/news/1041069586/l50
0531デフォルトの名無しさん
NGNG逆転も何もないって。
勢いで上告なんかしても一発で上告却下(門前払い)だよ。
二審も一審を支持。これに対して上告しようにも、
刑事訴訟と同様、自由に上告できるってもんでもないのです。
民事訴訟法312条 (上告の理由) 1項
「上告は、判決に憲法の解釈の誤りがあること
その他憲法の違反があることを理由とするときに、することができる。」
http://www.m-net.ne.jp/~doba/goto/hon.htm
ようするに上告しても今の制度では100%無駄。
これで完全終了ってことか。
0532デフォルトの名無しさん
NGNGまともじゃない掲示板なんて存在意義ないね。
そういうことならここじゃ意味ないと思うが。
0533デフォルトの名無しさん
NGNG0534デフォルトの名無しさん
NGNG落ち着け。お前の感じている感情は精神的疾患の一種だ。
静める方法は俺が(中略)
鯖の前で両目をひんむいて「びっくりするほどユートピア」と唱えながらキュウリを(以下略
0535デフォルトの名無しさん
NGNGなつかし。
0536デフォルトの名無しさん
NGNGお前にはがっかりした。
2chにも。さいなら。
0537デフォルトの名無しさん
NGNG0538デフォルトの名無しさん
NGNG作っちゃうの。
どう作るかはわかりませんw
しかし嵐とか不愉快な対策には「こいつがむかつく」と
ひとり1票で投票してきめます。
そしてその人はもうカキコ禁止。
どうやってカキコ禁止にするとかそういうのはわかりませんw
0539デフォルトの名無しさん
NGNG0540デフォルトの名無しさん
NGNGていうか、それくらいの気概で書き込め。
今までひろゆきに丸投げしていた負担を、個人個人で背負えばイイだけの話だろ。
ここからが本当の市民運動のスタートだよ。
0541デフォルトの名無しさん
NGNG>1 :ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ :03/01/08 17:13 ID:???
>そんなわけで、qbサーバでIPの記録実験をはじめましたー。
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/l20
IP記録実験PART2
http://qb.2ch.net/test/read.cgi/accuse/1042020193/l20
これまでのあらすじは あたりに誰かお願い。
0542デフォルトの名無しさん
NGNGそれに、会社立ち上げたんだし、たぶんにその辺からだろ〜ね。
0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGプロバ次第だと思われ。
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNG後半の批判は批判でいいと思うんだけど、書き込む人間の自己責任ってのとどう関係してるの?
0547デフォルトの名無しさん
NGNG461みたいなことばっか起こるだろ。
ろくなことなないな。2ちゃんなんか。
それもやられ損かなぁ?
訴えてやればいいのに。
0548デフォルトの名無しさん
NGNG荒らされる前までのリンク。
なんでプログラム技術板で私が覗いてる全スレでやられてるんだか・・・。
0549デフォルトの名無しさん
NGNG人が書き込んだものに対して賠償するのもアホらしいしな
ごく当り前な考えだわな
騒ぐ程のもんでもない
わかるか?
0550デフォルトの名無しさん
NGNGでもリアル法廷ではボロ負け。
0551デフォルトの名無しさん
NGNG0552山崎渉
NGNG0553デフォルトの名無しさん
NGNG年収600万円に満たない屑でも愉快に暮らせる楽しい世の中じゃないか。
いちいち爆破するな。
0554デフォルトの名無しさん
NGNGhttp://www.amazon.com/exec/obidos/tg/detail/-/0077093305/
こんな本が出てました。誰か読んだ人はいますか?
あと4月いは損氏の本。といっても仕様書そのままかもしれないけど
Haskell 98 Language and Libraries : The Revised Report
http://www.amazon.com/exec/obidos/tg/detail/-/0521826144/
0555山崎渉
NGNG0556デフォルトの名無しさん
NGNG入門本は取り敢えず読んだから、
簡潔な説明と簡単な使用例が有ると嬉しいんだけど。
>>554の本は、ちょっと違うみたいだし、
1969年にならないと手に入らないって書いてある……バグってるな。
0557デフォルトの名無しさん
NGNGhttp://www.haskell.org/definition/
↑の最初にある Report ふたつの PS・PDF を
印刷製本したものではとか思われ
0559山崎渉
NGNG0560デフォルトの名無しさん
NGNGhttp://sources.redhat.com/bzip2/#about-author
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG0563デフォルトの名無しさん
NGNGとりあえずHP作ってみた。
http://haskell.tripod.co.jp/index.html
0564デフォルトの名無しさん
NGNG(・∀・)イイ!
応援しますよ
0565デフォルトの名無しさん
NGNGもう解決したんだろうか。":?"
0566デフォルトの名無しさん
NGNG心強いです。感謝。
>>565
解決しました。感謝感謝。
0567デフォルトの名無しさん
NGNG0568デフォルトの名無しさん
NGNGバグか仕様か知らないけど、取り敢えず直してみた。
Windowsでプログラム組んだ事無いんで、変な事してる
かもしれないけど、一応動いたよ。
*** Wintext.c.origTue Aug 6 07:29:18 2002
--- Wintext.cMon Feb 3 21:20:30 2003
***************
*** 2497,2502 ****
--- 2497,2506 ----
goto otherKey;
}
+ if (readKey.KeyCode == '/') {
+ readKey.IsExtended = 0;
+ }
+
return readKey;
}
0569デフォルトの名無しさん
NGNG0570デフォルトの名無しさん
NGNG0571デフォルトの名無しさん
NGNG0572デフォルトの名無しさん
NGNGhttp://science.2ch.net/test/read.cgi/rikei/1046173479/l50
0573デフォルトの名無しさん
NGNG0574デフォルトの名無しさん
NGNGところで最近寂れてるな。
やっぱもうネタないのかね。
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG0578
NGNG遅刻の回数を基準にボーナスの額を決めること。
ttp://www.nurs.or.jp/~kneo/m_ti.html
0579デフォルトの名無しさん
NGNG値が実際に必要となるまで引数の評価を遅らせること。
要求呼び出し(call by need)
0580デフォルトの名無しさん
NGNG引数の評価は何らかの副作用を伴うことがあり、
引数がいつ必要になるか正確に知るのは難しい。
また、要求呼び出しはスタックによる実現が難しい。
0581デフォルトの名無しさん
NGNGここで作られてるコンパイラを使っている人はいますか?
0582デフォルトの名無しさん
NGNG説明ありがとうございます。
0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNG0586デフォルトの名無しさん
NGNGこの板にも居ますよ。たぶん数学屋の方でしょうけど。
ところでデータ構築子って理論的にカリー化できないのでしょうか?
最弱頭正規形を作ればいいのだから可能なのでは?と思いますが。
0587デフォルトの名無しさん
NGNGその辺は言語設計上の様々な観点を
考慮しながら決定するということで
0588デフォルトの名無しさん
NGNGカリー化されてるんじゃないの?
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG----code
data Tree a = Node a [Tree a]
instance (Show a) => Show (Tree a)
where show (Node item xs) = show item ++ show xs
-----実行
*Main> :type Node 1
forall a. (Num a) => [Tree a] -> Tree a
*Main> Node 0 (map (Node 1) (map (map (flip Node [])) [[2,3],[4,5]]))
0[1[2[],3[]],1[4[],5[]]]
-----
それとも、もしかして、こんなん?
-----code追加
test (Node a) = a
-----予想実行
*Main > test (Node 0)
0
*Main > test (Node 1 [])
1
-----
上はともかく、下はあってもおかしくないし、欲しいな。
あとで少し探してみるか…。
0592デフォルトの名無しさん
NGNG.hlp .pdf .htmlが古くて、.chmだけちょっと新しいような?
あと、Trexライブラリがうまく使えないんだけど、
もしかして再コンパイルが必要なのかな?
Hugs mode: Restart with command line option +98 for Haskell 98 mode
Reading file "C:\Hugs98\libraries\Hugs\Prelude.hs":
Reading file "C:\Hugs98\libraries\Prelude.hs":
Type :? for help
Prelude> :load Hugs.Trex
Reading file "C:\Hugs98\libraries\Hugs\Trex.hs":
ERROR "C:\Hugs98\libraries\Hugs\Trex.hs" - Illegal export of a lone
data constructor "EmptyRec"
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGHaskellも一部複雑だけどね。
ttp://www.teu.ac.jp/kougi/koshida/Prog6/
とか見て動かしてみれば慣れるよ。
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG2ちゃんねらーで金出してやれよ。
トップページのλの隣にモナー飾ってもらえるかもしれんぞ。
0597デフォルトの名無しさん
NGNGApril fool じゃないのか?
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG0600600
NGNG0601山崎渉
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG行列計算用のモジュールも公式サイトから辿れる。
あとはやりたい本人の裁量次第でいくらでも。
0606デフォルトの名無しさん
NGNGアリガd
0607デフォルトの名無しさん
NGNG昔Yale大学のサイトになんか書かれてたけど。
0608デフォルトの名無しさん
NGNG0609デフォルトの名無しさん
NGNG0610動画直リン
NGNG0611デフォルトの名無しさん
NGNGf x = let a = 1; b = c g
y = exp2
in exp1
f x = let a = 1; b = c
g y = exp2
in exp1
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNGかなりビミョーなデザインだと思うが。
0616デフォルトの名無しさん
NGNG0617デフォルトの名無しさん
NGNG-> = 高階関数
∀ = 多相
=> = 型クラス
>> = モナド
つーことかいな。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG0620デフォルトの名無しさん
NGNG0621デフォルトの名無しさん
NGNGfeaturing static typing, higher-order functions,
polymorphism, type classes and monadic effects
にそれぞれ対応してるという解釈のようだけどそれ分かって言ってんの?
0622山崎渉
NGNGピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0623デフォルトの名無しさん
NGNG0624遅報
NGNG0625デフォルトの名無しさん
NGNGhttp://www.haskell.org/ghc/docs/6.0/html/users_guide/template-haskell.html
0626デフォルトの名無しさん
NGNG(・∀・)イイ! or (゚д゚)マズー なのですか?
できれば、いい面と悪い面の両方を聞いてみたいです。
0627デフォルトの名無しさん
NGNG(・∀・)イイ!
実装がいくつかある。
(゚д゚)マズー
末尾再帰じゃない。
0628デフォルトの名無しさん
NGNG△:clean は遅延/正格の切替えができるらしいが、Haskellは…
0629デフォルトの名無しさん
NGNGSchemeやSMLも実装はいくつかあるが。
個々の実装の間に互換性がなければ、却って混乱するのでは?
0630Lazy eva.
NGNG必要なら呼んで
0631デフォルトの名無しさん
NGNG>(゚д゚)マズー
>末尾再帰じゃない。
lazyだと末尾の最適化はいらないんじゃなかった?
おれが勘違いしてるのかも知れないけど
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG純粋な関数型言語
厳格な型チェック
比較的豊富なライブラリ
遅延評価
わるいところ:
遅い
flatなarrayが無い
0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNG…実はこのスレの定義は既にすべて準備されていて、誰かが問いを放つとレスが見えるようになる?
0636デフォルトの名無しさん
NGNGこれの新しいバージョンがでるっていううわさは本当なの?
Ruby系サイトのどこかで書いてあった気がするのだけど。
0638637
NGNG0639デフォルトの名無しさん
NGNG逆かも?
問いが放たれてから、必要に応じて定義を考える。
0640デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNG問いの系列がmonadな演算で関連付けられてるので、
単独の問いに対しては当てはまらないカモッ!
0643デフォルトの名無しさん
NGNGそれではガイシュツ処理が出来ませんので、
不具合発生です。
0644モナd
NGNG(´d`) .。o〇(monad∈モナー?)
0645デフォルトの名無しさん
NGNG同じように見える。
人間にとって副作用のあるコードと同じように見えてる
とすれば、モナドって何の意味があるの?
人間が関数プログラミングしやすくするために副作用が
禁止されてるんじゃ無かったの?
0646デフォルトの名無しさん
NGNG0647_
NGNG0648デフォルトの名無しさん
NGNG違うけど、プログラマから見て同じように見えてるんだったら
プログラマにとっては同じでは?
コンパイラにとっての意味しかないのですか?
0649デフォルトの名無しさん
NGNG人間にとってはあなたの言う通りあるように見えた方が扱いよいわけだ。
で、「ない」ものをあるように見せるモナドは、便利ってことにならない?
それならモドキじゃなくて本物の副作用を認めてもいいじゃんという話はまた別
0650デフォルトの名無しさん
NGNG> 人間にとってはあなたの言う通りあるように見えた方が扱いよいわけだ。
それは関数プログラミングに反するから、関数プログラミング
の立場から見た場合、扱いが良いとは言えないんじゃないですか?
0651デフォルトの名無しさん
NGNG0652デフォルトの名無しさん
NGNGってやったら、あとは a は見るからに完全に副作用の無い
関数型プログラミングであつかうわけだから、
モナドがあるおかげで関数型の意味がなくなるなんてことは全然無い。
結局モナドって、
副作用や、コードを書いた時点では決まらないものを
普通の関数の引数なんかにつかって破綻するのをさけるために、
型の前にMとかつけてそのままじゃつかえなくする仕組みでしょう。
0653デフォルトの名無しさん
NGNG0654デフォルトの名無しさん
NGNGhttp://homepage3.nifty.com/coco-nut/
0655デフォルトの名無しさん
NGNG面白いですね〜
・リストの内包表現に萌えた
・無限データ構造萌え
numForm n = n : numForm (n+1) とか。
あるもんをあるように書いたらいいって言うのがすどい。
詳しい方々、わかんないことがあったら教えてください。
アフォなんですが何とかがんばって基本を理解してから、
モナドを通って詳しい皆さんのところにゆきつきますので。
いまは、組み込み関数?を調べるのに困ってたりします。
IntをDoubleに変換するのってどうするの?
IntとIntegerの変換どうするんでうか?
とか、わからん。
「**」が解らなくて困ってた事も。
(-1)で懲りて、あらゆるところに括弧つけまくりのコードを書いてたり。
0656デフォルトの名無しさん
NGNGfromIntegral :: forall b a. (Num b, Integral a) => a -> b
toInteger :: forall a. (Integral a) => a -> Integer
fromInteger :: forall a. (Num a) => Integer -> a
0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNG$をつかうと
f (g (h x))
みたいなのを
f $ g $ h x
とかけて括弧削減。
0659デフォルトの名無しさん
NGNGGHCで、API、例えばIsDBCSLeadByte Char -> Bool を使いたいと思ったらどうすればいいのでしょう
0660貧乏脱出!これであなたはお金持ち
NGNG本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)
///////.......///////////////////////////
0661デフォルトの名無しさん
NGNG手続き風にコードを書くためのシンタックストリックに過ぎない。
拡張でもなんでもない。
(もちろんシーケンシャルのオプションと使われることが多いわけだが)
0662デフォルトの名無しさん
NGNG,ノ⌒::::::::::::::::::::::::::::::::::::⌒ヽ_
_ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヾ、
(::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::)
_ノ:::::::::::::::;ヘ::::::::::ノ⌒ヽ:::::::::::::::::::::::::::::::::)
(::::::::::::::::::/  ̄ , ‐-、 |::::::::::::::::::::::::::::::::) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(:::::::::::::/ヽj _/ -‐-、 |::::::::::::::::::::::::::::::::) | トリックだ。
):::::::::ヾllli_、_,;iiiillllllllli <::::::;へ:::::::::::::::::( |
(::::::::::::/`i´ ,└=゚'┘ |::::| 6 |:::::::::::::::::::} < 副作用があるように見えているに
`〜、 ゝ| _コ、_、 /|::::| ソ/::::::::::;〜" | 過ぎん。
ヾ|||ll|||||||||||l〉| 三ー'〜〜" |
|||:二三|||| l ,三 ヽ、 \______________
|l ⌒ ||| :// ヽ=、-、_
|l、:( : : ||/ / ヽ, |  ̄\
/  ̄ / ノ / \
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNGhttp://www.sampou.org/haskell ならサーバマシンの調子が悪いそうです
0667デフォルトの名無しさん
NGNG復活したようです。
>>665
いないんじゃないですか。人少なそうだし。
俺は、外界との繋がりはsystem :: String -> IO ExitCodeくらいしか知らない。
0668659=665
NGNGでも、*.hiをバイナリ検索しても、IsDBCSLeadByteはインポートされて無いようです。
(CharNextとか、代用できそうなAPIも同様)
これは、Haskellで全角文字を扱うなというお告げでしょうか…
0669デフォルトの名無しさん
NGNGIsDBCSLeadByteってwindowsのAPI?
そういうものはそのライブラリとリンクしてつかうんじゃないのかな。
haskellに入ってるわけがないというか。
http://www.haskell.org/libraries/
のInterfacing with other Languages and Systemsとか。
0670デフォルトの名無しさん
NGNG>(真似たらできました)
おー、あなたも私から見たらすどい。
よろしければ、MessageBoxを出すコードをこのスレに張って
共有していただければありがたいです。
0671デフォルトの名無しさん
NGNGいや、GHC(Win版)には既にWin32 API(の一部)のHaskell用インポートが付いてるんですよ。
>>670
どーせ丸写しなので、いくらでも共有しましょう。
import Win32
main = messageBox nullHANDLE "Text" "Title" mB_OK
たった二行。
コンパイル時に -package win32オプションが必要です。
(win32ディレクトリ以下はデフォルトでは見てくれないので)
↓見つけたページ
http://www.haskell.org/pipermail/glasgow-haskell-users/2002-March/003110.html
なお、同じようにしてMessageBeepを呼ぼうとしましたが、挫折中です。
0672デフォルトの名無しさん
NGNGあ、でもリンク先のFFIとか使えばできそう?できるのか俺に?
…ありがとうございます
0673デフォルトの名無しさん
NGNG使おうとしたけど何だかよくわからんかった。(窓使いです)
0674デフォルトの名無しさん
NGNGttp://www.sampou.org/haskell/report-j/basic.html
>6.1.2 文字と文字列
>文字型 Char は列挙型のひとつで、16 bit の値からなり、Unicode 標準 [10] に準拠する。
Unicodeなので要らないのでは?
ちゃんと実装されているならばだが。
0675デフォルトの名無しさん
NGNG内部ではUnicodeかもしれないけど、全角文字をgetCharで読むと二回に分けて来るんですよ…
0676デフォルトの名無しさん
NGNGUnicodeとその(バイトでの)エンコーディングは別物だ。
0677デフォルトの名無しさん
NGNG実際
I/O functionsがbyte読んでそれをかえすだけだから、
Charが16ビットである意味がないんだよな。
謎の設計。
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGリストはモナドだから。
0681デフォルトの名無しさん
NGNGなんでリストがモナドなのがいまいちよく分からん。
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNG書いた後気づいたのだが return [3,4] >> [1,2] も [1,2] 返すのか
() がポイントではなく return の方がポイントだった
かきまぜてスマン
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG>>の型からわかる型推論。
0686デフォルトの名無しさん
NGNG0687デフォルトの名無しさん
NGNG参照透明性からいって 'a' が入力されたからといって IO 'a' が返るわけじゃないんだよね
たびたび出る話題でスマンが毎回納得にいたらない
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNG意味不明。IO Charだけど?
0690デフォルトの名無しさん
NGNG強いて言えば IO 'a'だろうが、それで参照透明性に何の問題が?
0691デフォルトの名無しさん
NGNGという気がする.モナドを理解するためには,次の論文を読むのが吉かと.
Wadler, P. : Monads for functional programming
0693デフォルトの名無しさん
NGNGそうそう.
0694デフォルトの名無しさん
NGNG実は暗黙のworldが渡されていて暗黙の新しいworldも返されている?
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNG何か問題があるような気もするがー。
0697デフォルトの名無しさん
NGNG0698デフォルトの名無しさん
NGNG_,..............._,.......
,ノ⌒::::::::::::::::::::::::::::::::::::⌒ヽ_
_ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヾ、
(::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::)
_ノ:::::::::::::::;ヘ::::::::::ノ⌒ヽ:::::::::::::::::::::::::::::::::)
(::::::::::::::::::/  ̄ , ‐-、 |::::::::::::::::::::::::::::::::) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(:::::::::::::/ヽj _/ -‐-、 |::::::::::::::::::::::::::::::::) | トリックだ。
):::::::::ヾllli_、_,;iiiillllllllli <::::::;へ:::::::::::::::::( |
(::::::::::::/`i´ ,└=゚'┘ |::::| 6 |:::::::::::::::::::} < 副作用があるように見えているに
`〜、 ゝ| _コ、_、 /|::::| ソ/::::::::::;〜" | 過ぎん。
ヾ|||ll|||||||||||l〉| 三ー'〜〜" |
|||:二三|||| l ,三 ヽ、 \______________
|l ⌒ ||| :// ヽ=、-、_
|l、:( : : ||/ / ヽ, |  ̄\
/  ̄ / ノ / \
0699デフォルトの名無しさん
NGNGreturn () >> [1,2,3]
後ろがリストなので、これはリストモナド
returnを外して、>> を >>= に変換すると、
[()] >>= (\x -> [1,2,3])
前のリストの要素それぞれに対して後ろの関数を呼んで、その結果を連結したものがこの式の値なので、
(\x -> [1,2,3]) ()
[1,2,3]
0700デフォルトの名無しさん
NGNGその通り。IO a はHaskellの側から見ると、
data IO a = IO (World -> (a, World))
このような構造になっていて、実行結果がIOだった場合に、表示する前にWorldが渡されて実行される。
実際はそんな面倒なことしていないと思うけどね。
0701デフォルトの名無しさん
NGNGでっかい合成関数を組み立てて、最後に一括して実行してるようなイメージでいいのでしょうか?→モナド
(と同時に、実装までそうなってないよなあと信じたい)
0702デフォルトの名無しさん
NGNGモナドを使えば副作用は「ある」というべきだろう。
たとえばモナドを利用したカウンタを利用して、
あるいは、ファイルに1, 2, ...と書き込んでループをつくれば、
あきらかにそこには副作用があるわけだ。
むしろWorldを変化させながら渡し続けるという発想の転換で(言語に対し)
無いように見せかけているだけだ。人間にとっては副作用は存在する。
0703デフォルトの名無しさん
NGNGあるように見せかけているだけだろ?
そうじゃなきゃモナドの意味がない
0704山崎 渉
NGNG__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0705デフォルトの名無しさん
NGNGあと、遅延実行されるのでそう実装しても効率は悪くならないと思う。
0706デフォルトの名無しさん
NGNG逆だよ。というか循環論法。
そもそも関数型言語には本来副作用は存在し得ない。状態ってものが無いからね。
しかし、特に外部とアクセスするプログラムのためには副作用が必要だ。
関数型言語と、その副作用をともなう処理を、
副作用の種類(IOとか)毎の(内部状態を保持する)モナドを導入することで*分離*してるだけだ。
0707デフォルトの名無しさん
NGNG701のイメージはあってるが、
> あと、遅延実行されるのでそう実装しても効率は悪くならないと思う。
遅延実行だからこそそういう式の組み立てと式の保存をやらないといけないわけで、
むしろ遅延評価だからと言ってそういう実装をするととんでもないことになる
というべき。
通常の式の評価でも下手に(末尾)再帰すると未評価の式の列が莫大になって
すぐオーバーフローする。
0708701
NGNGデータ型としてのモナドは、要するにC++のクラスtemplate、のようなもの…ですよね?
ということは、IO a -> aな関数が記述不可能なのは、言語の外を相手にしたIOモナドに限った制限で
一般的にはそんな制限は無い、で合ってます?
簡単なサンプルコードどこかにないかな…
0709デフォルトの名無しさん
NGNGリストから成分を抽出できるでしょ。
0710デフォルトの名無しさん
NGNGありがとです。
で、>>681氏と同じ疑問に行き当たるわけですが…
リストが状態を持っているとは思えないのですが、なぜモナド?
(a, b)とか他の一般の構造化型はモナドじゃ無いですよね。
0711デフォルトの名無しさん
NGNGリストを丸ごと全部で値と思わずに一部だけ更新したいんじゃない?
一部だけ更新するような操作には普通副作用がある。
…違うかな?
0712デフォルトの名無しさん
NGNG(a,b)とか一般の構造型はコンテナの中身の個数が1個ではない定数なのでうまく
モナド演算を定義できないような気がする
リストモナドの中身は任意個数。IOモナドは1個固定。
0713デフォルトの名無しさん
NGNGえーと、要するに、必然性は無いけど、
モナドということにすると [a] >>= (\e -> return (f e)) みたいな便利機能として使えるので
モナドということにしてある、ということですか。
>>711
よく見て無いのですが、ライブラリリファレンスにMutable ArraysとしてIOArrayが書かれてますので、
もしリストモナドで一部の更新が可能なら、こんなもの用意しないと思うので、それは違う気が
(我ながら無茶苦茶な論法だ…)
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNGすまんが、そういうふうにする以外の方法が自分には想像できない。
doも普通の再帰なので問題はなさそうだが?
>>711
リストモナド≒内包表記
副作用を発生できるモナドはIOモナドだけです。
>>710
ListとMaybeだけだね。
試しに、(a, b) でMonadを作ってみたが…きつい。
---
instance Monad ((,) a) where
(>>=) (sub, main) f = (sub, main') where
(sub', main') = f main
return main = (bottom, main)
bottom = bottom
test = do x <- (("a", 2), 1)
y <- return $ x+1
return $ y*2
---
*Main> test
(("a",2),4)
0716デフォルトの名無しさん
NGNG「型構築子」IO はモナドだけど IO a はモナドじゃないよ。
「型構築子」[] はモナドだけど [a] はモナドじゃないよ。
0717デフォルトの名無しさん
NGNGhaskellのリストやアレイはは一部を変更すると全部コピー。
というのは、そのデータ(リスト等)が他の場所で使われるかもしれないから。
一部を変更したということがそのデータを使うプログラムの他の部分にも
わからないといけない。
そのためには、使う部分全部をそのデータの内部状態をあらわすモナドでくるんで
おく必要がある。
# 変更し終わったら、それはモナドの外に出してもいい。
>>715
701の件については、誤読していた。それ以降の式、ってのが何を指すのかわからない。
それはともかくとして、
(IO/状態)モナド内の計算の実行は、手続き型と同様にできるとおもうけど。
> 副作用を発生できるモナドはIOモナドだけです。
haskellプログラムがわからみればIOも他のモナドもかわらない。
プログラマから見たときも結局は同じこと。謎の内部状態をもつ
モナドを受渡しながら処理を順次実行するわけだから。
内部で定義されたモナドでもそのモナドの性質をみとおさなければ、
副作用と同様でしょう。
0718デフォルトの名無しさん
NGNG副作用が出るわけで、関数型言語では一般にはそれができない。
だが、その副作用/状態を追跡するモナド(STArray,IOArray等)を引数と
して渡し続けながらの順次計算であれば一部変更もできるわけだ。
0719デフォルトの名無しさん
NGNG「データ構築子」はファーストクラスだけど
「型構築子」はファーストクラスじゃないよ。
0720デフォルトの名無しさん
NGNGモナドは「型構築子」の性質であって、データの性質じゃないよ。
0721デフォルトの名無しさん
NGNGまず、すまんかった。
確かに中身を見なければ副作用を起こすことは可能だ。そちらの言う通り。
以降の式だが、自分は a >>= (\x -> b) の式に出てくるλのことだと思っている。
そして、715のそういうふうにとは、どでかい合成関数を作ってからそれを実行するということ。
もちろん、遅延実行されるので、少し作ってはそれを実行してというふうになると思っているが。
>(IO/状態)モナド内の計算の実行は、手続き型と同様にできるとおもうけど。
main = sequence_ $ reverse $ [putStr "\n", putStr "a", putStr "b"]
こう言うのはどうする…?
…特殊すぎるか。他は最適化されててもおかしくないやね。
>>718
少なくともIOArrayはIOモナドの一部であってモナドそのものではないと思うが。
>>719
しかし少なくともカリー化はされている。
0722デフォルトの名無しさん
NGNGサンプルとして活用させていただきます
で、勝手にインデント。
module Main where
instance Monad ((,) a) where
(>>=) (sub, main) f = (sub, main') where
(sub', main') = f main
return main = (bottom, main)
bottom = bottom
test = do
x <- (("a", 2), 1)
y <- return $ x+1
return $ y*2
>>721
表現が悪くて申し訳ないです。そのつもりでした。do A; B… と書いた時のB以降です。
0723デフォルトの名無しさん
NGNGinstance Monad Id where
Id x >>= f = f x
return = Id
foo :: Int -> Id Int
foo arg =
do { x <- ID arg
; x <- ID (x * 2)
; x <- ID (x + 1)
; return x }
というHaskell のプログラムと、
int
foo (int arg)
{
int x;
x = arg;
x = x * 2;
x = x + 1;
return x;
}
は、そっくり。上は副作用をつかってないですけど、
下は副作用をつかっています。
そんだけ。
int
0724デフォルトの名無しさん
NGNGID じゃなくて Id
0725デフォルトの名無しさん
NGNG#include "hsFFI.h"
#include <stdio.h>
void __stdcall print_hex(HsInt a)
{
printf("%x", a);
}
foreign import stdcall "print_hex" printHex :: Int -> IO ()
main :: IO ()
main = do printHex 1234
>ghc ffi.hs ffi_c.hc -fglasgow-exts
Warning: retaining unknown function `_print_hex@4' in output from C compiler
動くんですけど、このWarningが消せない…
0726デフォルトの名無しさん
NGNG> 以降の式だが、自分は a >>= (\x -> b) の式に出てくるλのことだと思っている。
> そして、715のそういうふうにとは、どでかい合成関数を作ってからそれを実行するということ。
よくわからない。ダイナミックに関数を作ると?
> ...
> main = sequence_ $ reverse $ [putStr "\n", putStr "a", putStr "b"]
関数ポインタの配列をつくっておいて並べ替えるのかな。
>>721
> 少なくともIOArrayはIOモナドの一部であってモナドそのものではないと思うが。
確かに、モナドはそれぞれIOとSTだ。
モナドの一部っていうのもよくわからないが…
monad-awareという感じか。
0727デフォルトの名無しさん
NGNG__stdcall -> ccall、ffi_c.hc->ffi_c.c
で
ghc -ffi ffi.hs ffi_c.c
とすると何のWarningもなくコンパイルを通った(Windowsではない)。
0728デフォルトの名無しさん
NGNG5000円くらいまでなら買うからさ。
和書ないとやる気が出ねぇし、普及なんて夢のまた夢だよ。
0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNG拡張子を変えたら警告が出なくなりました。
よくよく見てみれば.hcってコンパイラが生成したCソース用の拡張子…
どうも、お騒がせしました。
0731デフォルトの名無しさん
NGNGくしゃみが出るくらいに香辛料の効いたカレーを“Haskell Curry”と云う!?
0732デフォルトの名無しさん
NGNG>よくわからない。ダイナミックに関数を作ると?
その通り。 (.) が関数を合成するのと同じように。
>関数ポインタの配列をつくっておいて並べ替えるのかな。
引数等を保存しておく必要があるので、それをすると、λと変わらないと思う。
>>722
無理しているので、return a >>= k = k a が成り立たなくなってたりしているので注意。
ついでに、前に作ったモナドをどうぞ。
面倒を少し減らす程度のものですが。
---
module Main where
--type ReadS a = String -> [(a,String)]
newtype ReadR v = ReadR { runr :: ReadS v}
instance Monad ReadR where
ReadR r >>= fr = ReadR (\str -> [ret| (v,str') <- r str, ret <- fr v `runr` str'])
return v = ReadR (\str -> [(v, str)])
rread :: (Read a) => ReadR a
rread = ReadR reads
rlex :: ReadR String
rlex = ReadR lex
test :: String -> (Int,String)
test str = head test' where
test' = do rread
`runr` str
---
Main> test "125 "
(125," ")
0733デフォルトの名無しさん
NGNG毎回の let (r2, g2) = random g1 in … 数字は使うたびに増やす…が面倒だったので、
モナドにすれば好きな時に r2 <- nextRandom とか書けるのかなあ、とか思ったり。
(既にあるのかもしれませんが)
>>732
うう、ありがとうございます。しかし、私のレベルでは何をやっているのかと用途の両方がわかりません…。
0734デフォルトの名無しさん
NGNG|無理しているので、return a >>= k = k a が成り立たなくなってたりしているので注意。
モナドの法則を満たさなくてモナドといえるの?
0735デフォルトの名無しさん
NGNGimport Random
data RandomProgression r a = RP (r -> (a, r))
nextRandom :: (RandomGen r, Random a) => RandomProgression r a
nextRandom = RP (\r -> random r)
instance Monad RandomProgression r a where
--(>>=) :: RandomProgression r a -> (a -> RandomProgression r b) -> RandomProgression r b
RP x >>= f =
RP (\r ->
let (a, r') = x r in
let RP b = f a in
b r')
--return :: a -> RandomProgression r a
return value = RP (\r -> (value, r))
書いてみました…instanceでエラーが出ます…わかりません…
↓こんな風に使えたらいいなと思ってる
let (answer, g) = (do a <- nextRandom; return (a `mod` 10)) (mkStdGen 100)
0736デフォルトの名無しさん
NGNGinstance Monad (RandomProgression r) where
実行用に
eval :: (RandomGen r) => RandomProgression r a -> r -> (a, r)
eval (RP e) r = e r
書き足して
RandomProgression> eval((do x <- nextRandom; return (x `mod` 10)) :: RandomProgression StdGen Int) (mkStdGen 10)
(7,432453652 1655838864)
動いたー!
どうも、スレ汚しごめんなさい
0737デフォルトの名無しさん
NGNGそんなことをする必要はない。
randoms (mkStdGen 1) ::[Int]
のようにして無限乱数列が作れるのだから。
Make use of the power of lazy evaluation !
# あとはそれにmapでもなんでもして加工すればいい。
0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNGなるほど!遅延評価を忘れてました。
しかしそれでも2個の乱数を取ってきたい時は、let (r1:r2:rs') = rs (以降はrs'から取る) みたく
乱数列を意識して渡していかないといけないような。いや、ずっと書きやすいではありますが。
0740デフォルトの名無しさん
NGNG知らん。気になるのなら、たとえば、こうすればちゃんとモナドになる。
module Main where
instance (Num a) => Monad ((,) a) where
(>>=) (sub, main) f = (sub+sub', main') where
(sub', main') = f main
return main = (0, main)
>>733
まずちょっと修正...スマソ。
import Monad -- 追加
instance Monad ReadR where
ReadR r >>= fr = ReadR (\str -> [ret| (v,str') <- r str, ret <- fr v `runr` str'])
return v = ReadR (\str -> [(v, str)])
fail s = mzero -- 以下追加
instance MonadPlus ReadR where
mzero = ReadR (\s -> [])
mplus (ReadR f) (ReadR g) = ReadR (\s -> f s ++ g s)
用途としては、下のようなコード(やさしいHaskell 8.3節からコピペ)のtuvwxのような変数を書かなくてもよくすること。それだけです。
>readsTree :: (Read a) => ReadS (Tree a)
>readsTree s = [(Branch l r, x) | ("<", t) <- lex s,
> (l, u) <- readsTree t,
> ("|", v) <- lex u,
> (r, w) <- readsTree v,
> (">", x) <- lex w]
> ++
> [(Leaf x, t) | (x, t) <- reads s]
0741デフォルトの名無しさん
NGNG>rreadTree :: (Read a) => ReadR (Tree a)
>readsTree s = rreadTree `runr` s
>rreadTree = do "[" <- rlex
> l <- rreadTree
> "|" <- rlex
> r <- rreadTree
> "]" <- rlex
> return $ Branch l r
> `mplus`
> do x <- rread
> return $ Leaf x
0742デフォルトの名無しさん
NGNGなんかまだ手続き型の頭のような気がする:)
関数型だったら結局繰り返しは再帰で書くんだから、
結局こんな感じになると思う。
f 0 result rs = result
f n result (r1:r2:rs) = f (n - 1) (g r1 r2 result) rs
# f 10 [] randomlist のように使う。
# g で欲しいものを計算。
0743デフォルトの名無しさん
NGNG0744デフォルトの名無しさん
NGNGNum a が気になる
0745デフォルトの名無しさん
NGNGVariable not in scopeと言われるのですが
0746デフォルトの名無しさん
NGNG気にするな。
0747デフォルトの名無しさん
NGNGfromInteger じゃだめなの?
今のHaskell 98 の Prelude には fromInt は無いのでは。
0748デフォルトの名無しさん
NGNGいえ、Intからの変換にfromInteger (toInteger n)と書くのが冗長な気がしただけです。
0749デフォルトの名無しさん
NGNGEnum クラスのメソッドが使えるのでわ。
toEnum :: Int -> a
fromEnum :: a -> Int
0750デフォルトの名無しさん
NGNGFloatやDouble…のつもりでしたが、それらもtoEnumでいけるのですね。
ありがとうございます。そして遅レスごめんなさい
0751デフォルトの名無しさん
NGNGけど、それ以外のモナドがワカンネ。
ライブラリ読んでみたりしたけど激むず。
モナド難しいですね。
ニセ手続き型を理解したあとは、どうしたらよいのでしょうか
0752デフォルトの名無しさん
NGNGmatchRegex (mkRegex "abc") "xabcx"
=> Just []
matchRegexAll (mkRegex "abc") "xabcx"
=> Just ("x","abc","x",[])
これってバグ?
0753デフォルトの名無しさん
NGNGmatchRegexAll (mkRegex "abc") "xabcx"
=> Just ("","abc","x",[])
0754デフォルトの名無しさん
NGNG実行効率周りとか。
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNGいただきました
0757デフォルトの名無しさん
NGNG2000年あたりに出版された本で勉強しようかと思っているのですが、それいらい大きく変わったとか、
近いうちに大きく変わるとか、ありますか?
0758デフォルトの名無しさん
NGNG処理系によっては独自拡張があることも。
0759デフォルトの名無しさん
NGNGサンクスコ。
言語仕様は大きく変わってないから、そのころの本で勉強しても問題ないということですね。
がんばって勉強してみます。
(関数型言語は使ったことがないから、なじめるかわからないけど)
0760デフォルトの名無しさん
NGNGライブラリがかなり違うような気がする。
ライブラリは階層化ライブラリ(Data.Listとか)
で決まりでいいのだろうか。
標準ライブラリ以外になると混沌としか言い様がない
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGここにあるのが標準ライブラリーで、足りない部分は、
http://www.haskell.org/libraries/
から探すとか、自作するということですか?
http://www.haskell.org/ghc/docs/latest/html/libraries.html
で、これが HUGS についてくるライブラリー群?
0763デフォルトの名無しさん
NGNGhttp://cvs.haskell.org/Hugs/pages/hugsman/libs.html
GHCは5.04.1=>6.0でライブラリ関係が少し変わっているような気がする。
0764デフォルトの名無しさん
NGNG0765デフォルトの名無しさん
NGNG↑赤黒木の実装に感動。
だれか、コンパクトなdelete実装しれ!
0766山崎 渉
NGNG│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0767デフォルトの名無しさん
NGNG0768デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています