- 1 名前:潜伏していた1 mailto:sage [02/02/16 16:55]
- 何とか生き残れました。
前スレ pc.2ch.net/test/read.cgi/tech/996131288/l50 関連 >>2 以降
- 296 名前:デフォルトの名無しさん [02/07/16 22:58]
- どうして、そんなに遅いの?
- 297 名前:デフォルトの名無しさん mailto:sage [02/07/16 23:06]
- >>296
それは言える… CleanとかMLとかは速いらしいのに!
- 298 名前:名無しさん@Emacs mailto:sage [02/07/16 23:37]
- Haskellは生成されたバイナリよりも、
コンパイラ自体がhaskellで書かれてる ことによる遅さがちょっとイラつかせる。 また勉強中の身だから偉そうなことは いえないですね。失礼しました。
- 299 名前:デフォルトの名無しさん mailto:sage [02/07/16 23:44]
- Cleanもそうです。
- 300 名前:291 [02/07/17 03:36]
- 沢山のレスありがとうございます。
>>292 英語は、辞書が在れば何とか読めるという程度です。 「uniqueness typing」ですか。Cleanの特徴の一つらしいですね。 評価するたびに違う(多様?)型を生成するというぐらいしか知りません。 参照透明性は確保されそうですが、使いやすいの? というぐらいの認識しかありません。もう少し調べてみます。 >>293 私も論理に弱いです。 Linear Ligicと言われても、使った公理は無くなる。 つまり公理の有る無しで状態を表すようにするという位しか わかっていません。 この認識も間違っているかもしれませんし・・・ つたない英語力と乏しい知識を総動員して何か判りやすい文章、本、論文 は無いかとあさっているという状態です。 >岩波の 2 冊本「コンピュータサイエンス入門」 ですか今度、大きい本屋に行ったときでも見てみます。 >>294 日本でも沢山の所が研究しているんですねー。 みてみます。
- 301 名前:デフォルトの名無しさん mailto:sage [02/07/17 17:54]
- >>298
それはグラスゴ大-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
- 302 名前:デフォルトの名無しさん mailto:sage [02/07/17 21:02]
- >>297
>CleanとかMLとかは速いらしいのに! non-strict な ML と、strict な Haskell を 比較すんなよ (;_;) せめて LazyML とか
- 303 名前:291 [02/07/17 23:57]
- >>294
国立奈良工業高等専門学校の先生のページに 論理型言語ですが時相と線形理論に関する論文載っていました。 ttp://kaminari.scitec.kobe-u.ac.jp/papers/index.html 少し判った気がします。 でも、これを如何いうふうに関数型言語に輸入すればいいのやら。 あと、下の本知っている人いますか? 線型論理入門 竹内 外史 ttp://www.amazon.co.jp/exec/obidos/ASIN/4535782148/
- 304 名前:291 [02/07/18 00:00]
- >>301
>岩波のそれは時相論理という論理の解説がメイン。 そうなんですか。買おうかな。 >IPSJ の学会誌とか研究報告が見れるんなら↓あたりが手頃そうだ。 学術誌は・・・。大学生のころは読めたのにね。 地元の大学言ってみような?如何しようかな?
- 305 名前:デフォルトの名無しさん mailto:sage [02/07/18 03:04]
- > non-strict な ML と、strict な Haskell を
逆
- 306 名前:名無しさん@Emacs mailto:sage [02/07/18 05:03]
- なんでいつもMLとHaskellはいがみあるばかりなんですか?
CとC++ JavaとC# PerlとRuby 他にもそういうの多いですがね。
- 307 名前:デフォルトの名無しさん mailto:sage [02/07/18 10:17]
- >>306
そういう低次元な話にもっていくな。
- 308 名前:302 mailto:sage [02/07/18 18:30]
- >>305 トチった。シクシク
>>306 別に、いがみあう必要ないじゃん。Standard ML では、 引数は適用される前に評価される、Haskell では、 普通はそうじゃない、ってダケの話。 他のヤツだって。.NET 使いたいなら C# 、 ケータイ用アプレットが作りたいなら Java とか、 現実、選択肢は広く持っていたほうが楽しいん だからさ。
- 309 名前:デフォルトの名無しさん mailto:sage [02/07/18 20:45]
- Haskellってnamespace無いの?
- 310 名前:デフォルトの名無しさん mailto:sage [02/07/18 22:13]
- >>309
たぶん module 機構がソレ。 Haskell98 仕様書の 5 節、 じぇんとるいんとろの 11 節。 ttp://www.haskell.org/onlinereport/modules.html ttp://www.haskell.org/tutorial/modules.html
- 311 名前:デフォルトの名無しさん mailto:sage [02/07/19 00:57]
- >310
あ、ほんとだ。サンクスコ
- 312 名前:デフォルトの名無しさん [02/07/19 01:13]
- >>308
SMLでも遅延評価でますよね。 Hsakellほど積極的では無いですが。
- 313 名前:デフォルトの名無しさん mailto:sage [02/07/19 01:46]
- >JavaとC#
>PerlとRuby この変は似たもの同士だからだろ?
- 314 名前:哲板過去ログから mailto:sage [02/07/19 17:42]
- 哲学板「論理なぜなにスレッド」の最後のレス
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) www.amazon.co.jp/exec/obidos/ASIN/0937073784/
- 315 名前:314続き mailto:sage [02/07/19 17:43]
- >>314-315続き
235 名前: 考える名無しさん 投稿日: 01/12/12 17:18 www.amazon.co.jp/exec/obidos/ASIN/0415126002/ をかいなさい。 242 名前: 考える名無しさん 投稿日: 02/01/06 15:37 >>229 いまどきならTroelstraとかHughes-Cresswell(古臭いっ)よりこっちがいい。 非古典論理を統一的に学べます. www.amazon.co.jp/exec/obidos/ASIN/041521534X/ 日本語なら小野寛晰先生の本がおすすめ。 244 名前: 考える名無しさん 投稿日: 02/01/10 02:32 >>242 おいおい、Hughes-Cresswell の第二版は 1996年に出たばかりだぞ。 なんかがらりとかわって別の本みたいになってると思ったけど、違うっけ? 今どきで、お手軽で様相論理絡みの非古典論理というなら、俺は、 www.amazon.co.jp/exec/obidos/ASIN/052179434X/ これをすすめたい。安いし、哲学の話もそれなりに多く書いてあるから、 この板の人向きと思うが。
- 316 名前:291 [02/07/21 09:40]
- おひさしぶりの291です。
私にとって言語(英語)の壁は厚いので そんな立派な本は、ちょっと・・・ という感じです。 とりあえず「コンピュータサイエンス入門」と「線型論理入門」は買いました。 ゆっくり勉強したいと思います。
- 317 名前:デフォルトの名無しさん [02/07/21 13:30]
- あーまてまて。^^; 最終目的にもよるが、linear typeの勉強をするのに、
linear logicの教科書まで読破する必要はないべ。(してもいいけど) 俺もlogicのほうは耳学問程度だが、linear typeのほうは 関連する研究で論文を発表できたぐらいには理解してる…つもり。 それよりもプログラム理論のお勉強のほうが重要かも。大堀先生の 「プログラミング言語の基礎理論」って教科書なんかどうだ。 線形型までいってないけど、それ以前に線形でない普通の型の理論を 理解しないと。 本を読むにしても、何も予備知識がないときついだろうから、以下で概説。 もし説明が下手で余計に混乱させちゃったらスマソ
- 318 名前:317 [02/07/21 13:41]
- HaskellとかMLとか使ってれば、普通の型は知ってることにしていいよな。
言語によっていろいろと書き方は違うが、たとえばintだったら整数だし、 floatやrealだったら浮動小数だし、int -> floatだったら 整数から浮動小数への関数だし、int * floatとか(int, float)とかは 整数と浮動小数の組だし、要するに値を分類してるわけだ。 で、線形型ってのは普通の値の分類をもっと細かくして、 その値を使う「回数」の情報まで付け加えた型なんだ。 テキストだと書きづらいが、int ->1 floatとか int ->0 floatとかint ->ω floatとか。 それぞれ、「1回だけ呼び出される関数」「決して呼び出されない関数」 「何回でも呼び出させる関数」の型。
- 319 名前:317 mailto:sage [02/07/21 13:51]
- で、そんなのが何の役に立つかというと、いろいろとあって
・もう「決して使わない」ことがわかった値はゴミなので、ガベコレできる ・式の遅延評価をするときに、「1回しか使わない」とわかっている値は 後のために覚えなくても良いので、オーバーヘッドを減らせる ・逆に「必ず1回は評価される」ことがわかってる式は、そもそも 遅延評価しなくて良いので、やっぱりオーバーヘッドを減らせる ・同じように、「必ず1回は実行される」ことがわかってる副作用は、 (Haskellのモナドみたく)遅延しなくても良いので、MLみたく その場で直ちに実行できる(?) って感じ。最後のは俺がよく知らないので、Cleanとかに詳しい人がいたら フォローをきぼんぬ。
- 320 名前:Super Combinator mailto:sage [02/07/21 14:00]
- >>316
竹内外史の本はかなり手ごわい。
- 321 名前:317 mailto:sage [02/07/21 14:04]
- 最後にlogicとの関係だが、linear logicっていう「命題を使える回数」も
考慮した論理があって、linear typeも元々はそこから派生したそうな。 どんな論理かというと、よくある説明なんだが、 命題P = 「あなたは120円を持っている」 命題Q = 「コーラを買える」 命題R = 「お茶を買える」 とおいて、Pと「PならばQ」と「PならばR」の3つが成り立っているとする。 すると、普通の論理ならPを2回ほど使って「QかつR」を結論できてしまうわけだが、 120円でコーラとお茶の両方が買えるってのはおかしいよな。 だから、そういう「使ったらなくなる」ものを考えに入れて、 「命題Pは一回しか使えない」みたいな性質も考慮できるようにした論理が linear logicというわけだ。上の例だと、Qを結論することはできるし、 それとは別個にRを結論することもできるが、「QかつR」を同時に 結論することはできない。
- 322 名前:317 mailto:sage [02/07/21 14:11]
- と、これぐらい知っていれば、後はCleanを使ってみるなり、
上のほうのWadlerのチュートリアルを読んでみるのが (linear logicの教科書を読破するよりは)手っ取り早いと 思うんだが、どう? もちろん、特定の目的じゃなくて 一般教養としてなら、linear logicの勉強もいいかもしれないけど。 もし英語が苦手だと最初は大変かもしれんが、この手の (わりと)新しい話を少しでも突っ込んで調べようと思ったら、 何でも英語は避けて通れないと思われ。っていうか、下手な 日本語の解説よりも、上手な英語の説明のほうがわかりやすいかと。
- 323 名前:Super Combinator [02/07/21 15:24]
- andとorに分配法則が成り立つのと成り立たないのと二種類ある、
それがlinear logic。>>321みたいなのを特にresource logicと呼ぶことがある。
- 324 名前:317 [02/07/21 15:39]
- ええと、323さんはなんでそんな風に思った?^^;
嘘を教わっているか、思い違いをしてそうなので、 例のInformation & Computationをのっとった、Girardの オリジナルの論文を読むと吉かと思われ。 Girardの「しゃべる」英語は激しいフランス訛りで、 発表を聞いてても個人的に話をしても言ってることが すげーわかりにくいが(笑)、上の論文はわりとわかりやすい。
- 325 名前:覚え違いスマソ mailto:sage [02/07/21 15:43]
- 誤: Information and Computation
正: Theoretical Computer Science
- 326 名前:291 [02/07/21 23:32]
- どうも291です。
みなさんの親切なレスが貰えてうれしいです。 >>319 論文読んでもlinear typeの構造が判ったような気がするというレベル で止まっていました。なるほど。 linear type関連の論文て意外と少ないような気がしたので、そのバックにある linear logicを勉強すればlinear typeのことが判るかな?という安易な動機しか なんですけどね。 でも記号の操作のしかた忘れたなー。完璧に。 あとCleanですか?Downはしてますけど、使ったとき無いです。 うーんCleanも勉強すべきなのかな?
- 327 名前:291 [02/07/22 01:02]
- >大堀先生の「プログラミング言語の基礎理論」
この本は持っています。 読んでいますし、3割ぐらいは理解しているつもりです。 型推論も基礎となるアイデアも理解しているつもりです。 >上のほうのWadlerのチュートリアルを読んでみるのが 「Linear types can change the World!」は読んでいます (20ページ程度の文書なら、英語でも読む気がするんですがね。) でも、この論文は、317さんの解説のやつとは少し違うかな?
- 328 名前:293,301 mailto:sage [02/07/24 11:54]
- あ、論理カゼを吹かせてしまったのは自分だ。スマソ m(_ _)m
Wadler の解説に目を通してみました。World 型の ような、捨てたり複製しちゃいけないとかいう値を 導入するための仕掛けが線形型ってことですね。 monad の解説 "Imperative functional programming" の 4 節にある、評価順序を保証するためだけにある、 受け渡されるだけで値は運ばない変数 w を表面に 引っ張り出して活用する、という感じなのでしょうか。 ↑これは激しく勘違いかも。 上の >>319 で説明されてるところは、Haskellコンパイラ 方面で研究されてる必須性解析やら更新回避解析やらを プログラマが明示できる/しないといけない、と感じたん ですが、どうでしょうか。
- 329 名前:デフォルトの名無しさん mailto:sage [02/07/24 23:14]
- Cleanに関するページのようです。
Cleanってすごいですね。 ttp://sky.zero.ad.jp/~zaa54437/
- 330 名前:デフォルトの名無しさん mailto:sage [02/07/25 22:22]
- ttp://www.sysj.co.jp/sichp/msg0104_2.htm
- 331 名前:デフォルトの名無しさん mailto:sage [02/07/26 13:33]
- 藁藁
- 332 名前:デフォルトの名無しさん mailto:sage [02/07/26 18:49]
- >>329のサイト、ブラウザで画像もJavaScriptもOFFにしてたら、トップページから中に入れない。
しかたないからHTMLソース見てみたら… ><!-- >こういっちゃなんだけど、人のページのソースを見るのはどうかと思いますよ。 >そういう人は今後このサイトには来ないようにして下さい。ええ。 >--> コワイヨー
- 333 名前:332 mailto:sage [02/07/26 18:59]
- あ、上の書き込みだけだと中傷にしか見えませんね。スマソ。
初心者の僕にはとても勉強になりました。つーか、大堀先生の本が読めなくて ちょっとへこんでたんですけど、書評読んだらすこし元気が出てきました。 がんばるぞー。
- 334 名前:デフォルトの名無しさん mailto:sage [02/07/26 19:22]
- >>333
わかんなければソース見てもいいと思うぞ。勉強になる。 あっちが見られる様な媒体で見られたくないものを置いている方が悪いんだから。
- 335 名前:デフォルトの名無しさん mailto:sage [02/07/26 19:53]
- (゜д゜)<あらやだ!
www.amazon.co.jp/exec/obidos/ASIN/0201882957/ 未だ全部読んでないのに、 Haskell:the Craft of Functional Programming の第三版が出ちゃった! ……と思ったら日付が、
- 336 名前:デフォルトの名無しさん mailto:sage [02/07/26 20:04]
- スゲ〜
二度と見に行くかよ、と思わせるためにやってるとすれば、 とっても効果的だ。
- 337 名前:デフォルトの名無しさん mailto:sage [02/07/27 00:35]
- >>335
俺も一瞬そう思った
- 338 名前:デフォルトの名無しさん [02/07/27 00:49]
- age toku yo
- 339 名前:デフォルトの名無しさん mailto:sage [02/07/27 01:15]
- <!--
すぐに出せるようにと思ったんで、 今後の更新予定とかをコメントでつけてましたが、 それらは全部削除しました。 まあ確かにそんなものをつけるべきではないのかもしれませんね。 --> コメント変わった? ここ読んでる?
- 340 名前:デフォルトの名無しさん [02/07/27 01:35]
- >>329
の書き込みは要するに自作自演書き込みって事でしょ。
- 341 名前:デフォルトの名無しさん [02/07/27 01:35]
- 世間が狭いだけでは
- 342 名前:デフォルトの名無しさん mailto:sage [02/07/27 09:03]
- >>339
削除した理由が、 「まあ確かにそんなものをつけるべきではないのかもしれませんね。」 誰かに注意を受けたと取るのが一番か。
- 343 名前:デフォルトの名無しさん [02/07/27 09:34]
- 書評も的を射ていないっぽ
- 344 名前:デフォルトの名無しさん mailto:sage [02/07/27 14:07]
- スレ違い。
- 345 名前:デフォルトの名無しさん [02/07/27 18:13]
- CLEANを紹介したのはエライが、
自作自演とか、偉そうにWeb作ってるのはイクナイ。
- 346 名前:デフォルトの名無しさん mailto:sage [02/07/27 23:11]
- なぜ自作自演?
とか書くと、これも自作自演と勘違いされるのだろうか? >偉そうにWeb作ってるのはイクナイ 作っている分だけ偉いです。 ヒガミはイケナイネ。
- 347 名前:デフォルトの名無しさん [02/07/28 08:06]
- Cleanのページ作ってる奴はここを読んでるやうだな。
Cleanってば名前しか知らなかったので、ページ作ってくれたのは非常に よろしいと思う。イイ。 だけど、自分の理解が怪しいこととかまで、無理して書いてないかの? 斜めにしか読んでないが、なんか外してるところがある気がちょっとする。 >>339とかもどうかと思われ。
- 348 名前:デフォルトの名無しさん [02/07/28 08:29]
- Haskellの話をしよ〜ぜ。
- 349 名前:デフォルトの名無しさん [02/07/29 00:25]
- Haskell がメインの開発言語になってる会社ってありますか?
- 350 名前:デフォルトの名無しさん [02/07/29 08:46]
- >>349
Galois Connections www.galconn.com/
- 351 名前:デフォルトの名無しさん mailto:sage [02/07/29 10:31]
- もし、今後 Haskell 本とか書くヒトが居たら、是非
「本書の内容の正否・当否についての質問・意見は、明確で 具体的な理由をつけて、匿名ではなく、hoge@hoge.jp まで お願いします。また、これら以外のことに関する本書への 批判・評論は刑法230条又は231条等に触れる恐れがあり ますのであくまでも自己責任でお願い致します。」 とでも、表 2 カバー裏あたりに書いとけば良いかも :-)
- 352 名前:デフォルトの名無しさん [02/07/29 10:38]
- >>351
なんだそれは。 Cleanのページ作った人ですか? 突っ込まれたから、ぼやいている? Haskellのページとかschemeのページは前からあるけど、 だれも苦情は言わないし、ありがとうしか言わない・・ですが?
- 353 名前:デフォルトの名無しさん mailto:sage [02/07/29 10:38]
- 「本書の内容の正否・当否についての質問・意見は、明確で
具体的な理由をつけて、匿名ではなく、hoge@hoge.jp まで お願いします。また、これら以外のことに関する著作者への 批判・評論は刑法230条又は231条等に触れる恐れがあり ますのであくまでも自己責任でお願い致します。」 こうだな、正確には。
- 354 名前:デフォルトの名無しさん mailto:sage [02/07/29 10:52]
- >>351
バイアスかけるのは止めてね Haskellのスレだし。
- 355 名前:デフォルトの名無しさん [02/07/29 11:30]
- >>351
おまえ私怨か?
- 356 名前:デフォルトの名無しさん [02/07/29 13:33]
- >>351マンセー(ww
- 357 名前:デフォルトの名無しさん [02/07/29 17:34]
- Haskeルン
- 358 名前:デフォルトの名無しさん mailto:sage [02/07/29 20:55]
- ああ、DUAL!ってやつ?
- 359 名前:デフォルトの名無しさん mailto:sage [02/07/29 23:02]
- ?
- 360 名前:デフォルトの名無しさん mailto:sage [02/07/30 18:13]
- >>352
ぼやきか・・・ それはもしかしたらイタイ発言ではなかろうか
- 361 名前:332 mailto:sage [02/07/30 20:28]
- なんか俺のカキコのせいで荒らされちゃってますね、スレの皆さんごめんなさい。
もう夏休みに入ってるって事をすっかり忘れてました。
- 362 名前:デフォルトの名無しさん mailto:sage [02/07/31 00:54]
- >>361
お前のような万年厨も問題だがな
- 363 名前:デフォルトの名無しさん mailto:sage [02/07/31 02:40]
- >>362
ハー。 人の振り見て・・・ということで。
- 364 名前:デフォルトの名無しさん mailto:sage [02/07/31 17:02]
- >>363
厨
- 365 名前:石敢當 [02/08/02 22:28]
- Haskell 98 Report が本になるみたいですね。
- 366 名前:デフォルトの名無しさん mailto:sage [02/08/02 23:01]
- >>365
母さんソース
- 367 名前:デフォルトの名無しさん mailto:sage [02/08/02 23:08]
- じゃ、誰かものすごい勢いで日本語版も
出版してくれよな。
- 368 名前:デフォルトの名無しさん [02/08/03 08:55]
- 気づいたら最初のスレが立ってから一年過ぎてる。
最初のころはHaskellスレ限定コテハンも何人かいて妙にまたーりとしていた 気がするのだが、最近廃れっぷりが激しいな。最初のころのような勢いも無いし。 懐 古 う ざ い よね。 すまん。逝ってくる。
- 369 名前:デフォルトの名無しさん mailto:sage [02/08/03 09:25]
- ネタがないんじゃよー
誰かお遊びで作ったプログラムとか貼ってくれませんか?
- 370 名前:デフォルトの名無しさん [02/08/03 15:03]
- 関数型言語初心者です。
Haskellでクイックソートのコードを以前見かけて、こんなにシンプルになるのかと感動しました。 では、バブルソート(二重for文で大小比較の単純なやつ)はどうなるのでしょうか。 iとjを引数にして二重に再帰を繰り返し、takeやdropで切り貼りするしか無いのでしょうか? もっと効率のいいやり方があるのでは、と思うのですが…
- 371 名前:デフォルトの名無しさん mailto:sage [02/08/04 05:06]
- >>370
それらしいものを書いてみようとしたら 選択ソートとバブルソートが混ざったような中途半端なものになった。 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) つか効率を気にすればするほど選択ソートっぽくなると思う。
- 372 名前:デフォルトの名無しさん [02/08/04 05:20]
- このスレってほとんどコード出てきてないのな。
- 373 名前:デフォルトの名無しさん mailto:sage [02/08/04 07:27]
- Haskellは犬ですか?
- 374 名前:デフォルトの名無しさん mailto:sage [02/08/04 13:54]
- Haskellerと言ってもその程度。
- 375 名前:370 mailto:sage [02/08/04 16:19]
- 何故>>371でソートになるのか悩んで、紙に書いてようやく理解しました。
最小値を取り出して、それを x : bs rest [] で先頭に結合しているわけですか。 bs xs i j なんて関数を作って手続き型そのままにやろうとした俺とはえらい違いです。敬服。
- 376 名前:370 mailto:sage [02/08/07 22:54]
- 数日間が空いてはっと気付く…
>>371のコードですと、要素数に比例してスタックを消費してしまいませんか? (半端な知識ですが、末尾再帰になってなく見えます。書き直せないところが厨ですが…) 関数型言語の場合、スタック消費は気にしない方がいいのでしょうか。
- 377 名前:デフォルトの名無しさん [02/08/10 10:05]
- >>376
関数型言語では基本データ構造のリストが再帰的(末尾再帰ではない)に 定義されているわけで、そもそもスタックを消費しまくることを前提に 作られているでしょうから、スタックの消費をあまり気にしなくていい言語と して使えるはず。 Haskell のような遅延評価が基本の言語では、自然な再帰のアルゴリズムの プログラムを、末尾再帰のアルゴリズムのプログラムに書き換えることも、 計算のオーダーが変わるようなもの以外は、あまり、気にすることはない 気がします。
- 378 名前:デフォルトの名無しさん [02/08/10 11:42]
- よく関数型言語で Xs, とかYsってvariableなんだけど、なんでXsなの?
この最後のSはどっからでてきたの?X,Y,Z,W,Vとかでいいじゃん。 Sなんてつけなくても
- 379 名前:デフォルトの名無しさん mailto:sage [02/08/10 12:14]
- x:xs
複数形のsです。
- 380 名前:日曜Haskellerオヤジ [02/08/11 06:22]
- ものすごい久々です、
現在はプログラミング基礎論の勉強がてら一緒に Haskell もお勉強モードな土日です。 >>368 特に初心者がやるときには、英語を勉強しつつ Haskell の勉強もしようとすると 忙しくなりすぎて、とりわけ社会人だと極度のんびり勉強モードになってしまいます。 そうすると、どうしてもネタが尽き気味になりますよね、 和書の入門書がぜひとも欲しいところです。 大学院の学生さんたちの誰かが執筆してくれればいいんですが、だれか書きませんかね? Haskell は離散数学とか圏論とかとセットにすると非常に面白い本ができると思うのですがどうでしょう? あと、圏論の専門本も是非とも欲しいところですね、これも本当にない、 まったくと言って良いほど本がない、あっても絶版ばかりで手に入りません。 シュプリンガーフェアラーク出版の「代数学とは何か」に書かれてあるのが、 手に入りかつ、知っている範囲なのですが、 これは数学の専門書でプログラマには少々というかかなりの難解ぶりです。 自分がなんとか読めそうと感じられる範囲では、 ここ www.etl.go.jp/etl/divisions/~yoshiki/ut97/ にあるんですが、これも内容を充実して製本された本が欲しいところです。 初心者向きといえば、以前工科大のページがあったんですが 消滅してしまっているようです、越田センセまた何かページつくってくれないかな・・
- 381 名前:デフォルトの名無しさん [02/08/11 07:14]
- プログラムはじめてやるのにラムダカルキュラスは難しすぎる
- 382 名前:デフォルトの名無しさん mailto:sage [02/08/11 09:07]
- nicosia.is.s.u-tokyo.ac.jp/members/hagiya.html
はぎゃー先生のページ面白い
- 383 名前:yuki [02/08/20 07:38]
- ====================================================================
すみません。初心者なのですがこんな質問に誰か答えていただけるのでしょうか? 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になります。 誰か、アイデアでもいいので下さい。 すみません何分初心者なもので。 レスお待ちしてます。 =======================================================================
- 384 名前:デフォルトの名無しさん [02/08/20 08:36]
- >>383
その区切り線には宗教的意味か何かでもあるのか?
- 385 名前:デフォルトの名無しさん mailto:sage [02/08/20 09:14]
- >>383
宿題は自分でやりましょうね。
- 386 名前:デフォルトの名無しさん mailto:sage [02/08/20 11:42]
- Haskellって、
学校の授業でどのくらい使われてるの?
- 387 名前:日曜Haskellerオヤジ [02/08/20 12:50]
- 宿題だとすると・・・そのまま答えを書いたらまずいかな(笑
私だったらこんな感じで作りますかね。 見ているとスペースのところで文字列が切断されていて非常に感じが悪いのでそれをまず結合します。 つづいてこの文字列リストから ":" , ";" を取り除いて出来上がり
- 388 名前:日曜Haskellerオヤジ [02/08/20 12:52]
- おまけ
結合すべき文字列は直後が ";" ":" でないことに着目すると簡単に作れるでしょう。
- 389 名前:383 mailto:sage [02/08/20 12:55]
- 「Haskell言語プログラミングレッスン <上> Haskell言語を始めよう」
「Haskell言語プログラミングレッスン <下> 関数型言語を始めよう」 出版準備です。
- 390 名前:デフォルトの名無しさん mailto:sage [02/08/20 13:02]
- 出版準備?大丈夫かよオイ
- 391 名前:デフォルトの名無しさん mailto:sage [02/08/20 13:04]
- ネタだろ…
- 392 名前:日曜Haskellerオヤジ [02/08/20 13:11]
- よく見てみると、単に複数文字列があるだけじゃなくて、
レコードみたいになっていますね ';' ':' ブラウザはの見分けがつかない 間違っているので上記2レスは無しということでお願いします ';' でいったん文字列リストのそのまたリストに分解して 先頭を順序対の左 上記を取り除いた上での、先頭と末尾を取り除いた文字列の結合を右の順序対として リストを作ればよいみたいですね。
- 393 名前:日曜Haskellerオヤジ [02/08/20 13:25]
- >>389
本当ならうれしいですね、ちょっと作ってみましょう、しばらくかかります。
- 394 名前:デフォルトの名無しさん [02/08/20 13:27]
- 個人的には関数の型が気にいらんな。
type Assoc = [(Field, Value)] lookupAssoc :: [Key] -> Assoc -> Assoc をつくれ、としたほうが抽象化のレベルがあうのでないか。まあ、 parseAssoc :: [Token] -> Assoc をつくって lookupTokens :: [Key] -> [Token] -> [(Field, Value)] lookupTokens keys tokens = lookupAssoc keys (parseAssoc tokens) とすれば元の題意にはあうだろうが。
- 395 名前:デフォルトの名無しさん mailto:sage [02/08/20 14:00]
- >>389
題名的には上下逆だろ。
- 396 名前:日曜Haskellerオヤジ [02/08/20 15:52]
- 関数型言語の素人のコードなので変かも知れませんが大体こんな感じになります。
本できたら、このスレッドに報告してくださいね、買います。 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 )
|

|