1 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:41:29 ] haskell.org www.haskell.org/ 日本語サイト www.sampou.org/cgi-bin/haskell.cgi www.shido.info/hs/ 過去ログ 関数型プログラミング言語Haskell Part1 pc.2ch.net/tech/kako/996/996131288.html Part2 pc2.2ch.net/test/read.cgi/tech/1013846140/ Part3 pc8.2ch.net/test/read.cgi/tech/1076418993/ Part4 pc8.2ch.net/test/read.cgi/tech/1140717775/ Part5 pc8.2ch.net/test/read.cgi/tech/1149263630/ Part6 pc11.2ch.net/test/read.cgi/tech/1162902266/ Part7 pc11.2ch.net/test/read.cgi/tech/1174211797/ Part8 pc11.2ch.net/test/read.cgi/tech/1193743693/ ・2chの仕様により、行頭の半角スペースは表示されません。 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
669 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 15:47:12 ] 計算資源が有限なため、howが分からないとwhatも記述できないという罠
670 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 15:59:09 ] 本質的には what -> how の書き換えと how -> how の最適化は似たようなもんだからな。 最適化は手続き型でもやってるから、非手続き型の人はwhatの部分を強調してみたりC/C++より速くなると言ってみたり。 LLの人は最適化にあまり拘らないし、テストさえ通ればhowを直接書いてもいいやって感じだけど。
671 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 17:18:22 ] >>667 >>600 前後の流れ参照 要するに未評価の式(これはクロージャで実装されてる)を溜め込まないように注意する必要がある
672 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 20:51:42 ] しかし、そんなこと言ってたらprologだって宣言型と言えなくなるんじゃない?
673 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:42:38 ] お前らは 人間の性格はA型B型O型AB型の4種類に分けることができる とか思ってそうだよな。
674 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:36:24 ] なんでも過不足なく分類できると思い込む愚かさ 血液型と性格をろくな検証なしに簡単に結びつけてしまう短絡さ どっちをさしてるのか紛らわしいので例としては不適
675 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 01:06:10 ] >>674 おもしろおかしい
676 名前:デフォルトの名無しさん [2008/09/01(月) 07:57:32 ] www.realworldhaskell.org/blog/2008/08/22/our-writing-is-now-complete/ 書き終わったって。
677 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 15:40:49 ] zipで(ry
678 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 14:15:50 ] >>666 プ 試しにZあたりの実行系でもつくってみればw
679 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:56:25 ] >>678 何が言いたいのははっきり言え。 小馬鹿にするだけでは情報価値ゼロだぞ。
680 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 08:50:51 ] 述語論理なめんな、ってことじゃね? せめてホーン論理に限定するとかじゃないと話にならんだろ。
681 名前:デフォルトの名無しさん [2008/09/03(水) 23:53:10 ] 関数とKleisli以外のメジャーなArrowってあるの?っていうかArrowって死滅したの?
682 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:04:13 ] >>676 おお!でも英語疲れる。訳書出版の予定はないの?
683 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:25:52 ] >>681 死滅しそうなのはHaskellだが、新しいHaskellのライブラリはほとんどArrowベースだよ。
684 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 11:41:24 ] このスレって嘘多いよな。
685 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:00:02 ] このスレって〜 ってレス多いよな。
686 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 15:00:58 ] そういえば、大学入試のときに大学ランクとタバコの関係に気づかされたなぁ・・・ 東大 誰も吸っていない 京大 誰も吸っていない 同志社大 ちらほら 関西大 校舎内で吸っているやつがいる(!!!) ありえないです、低ランク大・・・ やっぱりランクの低い大学出身のやつは信用できない・・・
687 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 15:19:00 ] そして増える意味不明なレス
688 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 15:20:04 ] >>684 素人なのでどの変がうそなのか教えてください
689 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 15:45:52 ] 686みたいな奴がhaskellを使うとはとても思えんのだが、 何しに来てるのかね?
690 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 15:50:35 ] >>689 Haskellがどういうものだと思っているんですか?
691 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:36:25 ] >>686 は今マルチされてるコピペ、スルー推奨です。
692 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:33:03 ] >>690 全角数字を見るといらっとくる人が使う言語
693 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:35:16 ] 確かにイラっときた
694 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 21:21:38 ] >>693 それはカルシウム不足
695 名前:デフォルトの名無しさん [2008/09/06(土) 23:15:53 ] Haskellで良いコード綺麗なコードというのはどんなコードですかね。 出来るだけ変数使わない方がいいとか、何が何でもポイントフリーにするとか、 あるいはそれ以外でも、何でも。
696 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 23:55:28 ] >>695 y f = f (y f)
697 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:05:33 ] >>695 haskellでは数学的にきれいなコードが「きれいなコード」と呼ばれます。
698 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:12:32 ] 良いコード: 意味のあるところでControl.*を使う 悪いコード: ポイントフリーのためにControl.ApplicativeやControl.Arrowをimport
699 名前:デフォルトの名無しさん [2008/09/07(日) 00:15:18 ] っていうか、ポイントフリーってなにがいいの?せっかくパターンマッチがあるのに。 >>687 ライブラリはそうだろうけど、普通のアプリを書くときは?
700 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:33:20 ] 単純な場合には無駄に変数が増えず、シンプルに分かりやすくなるから良い。 複雑な場合には無理をしても分かりにくくなるだけだから悪い。 パターンマッチとは使いどころが違う。
701 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:34:19 ] >>699 圧倒的に短く書けるからだよ。 それにポイントフリーだと関数の入出力の流れみたいなのがまっすぐ表せるから、処理の全貌が見通しやすい
702 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:41:52 ] まっすぐだけど、流れが逆じゃん。 というわけで>>>使うのはやっぱダメ?逆なのに脳味噌合わせるべきなの?
703 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:46:48 ] GUIアプリを書くときはどういうのが綺麗なんだ?
704 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:59:26 ] >>702 逆なの? y = f x より x f = y が脳味噌に合ってるの?
705 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 01:11:04 ] >>704 なんでやねん。 unlines . take 10 . filter (> 10) . map read . lines より、 lines >>> map read >>> filter (> 10) >>> take 10 >>> unlines の方が、少なくとも俺は脳に優しく感じる。 で、こう書くと、map read と filter (> 10) を分けてるのが冗長でダサい気もするが、 (filter (> 10).read)みたいにした方が良いのか、かえってこっちの方がダサいのか、 あるいは、(filter (\x -> 10 > read x)) みたいにラムダにすべきなのか、綺麗の勘所が判らんのです。
706 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 01:12:53 ] >>705 あ、前半がStringに戻してないのはご愛敬と言う事で、よろしく。
707 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 01:32:55 ] >>705 String に戻さないといけないなら filter ((10 <) . read) だろう。ラムダでもいいけど。 まあ、その辺はこだわるとこでもないかと。 > なんでやねん。 f (g x) と (f . g) x の向きは関係あるんですよ。 数学でも向き的事情から x^f という記法を使うこともある。
708 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:23:43 ] >>702 左から右だろうが右から左だろうがどっちでも一緒だろ。 俺には違いが分からん。
709 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:27:05 ] >>702 こういう反抗したい年頃のやつが言語を汚くしていくんだろうな。 なんでもないものを指差して「使いにくい」などと言ったり、まるでガキ。
710 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:31:39 ] 現代日本では横書き文字は左から右だから、 その方が自然に感じるのは当然と思います。 また、bind演算子が(>>=)で左結合である事を考えても Haskellを設計した人もその方が自然と感じたのではないでしょうか? 慣れの問題かもしれませんが、 そんなにおかしな意見とは思えません。
711 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 07:34:52 ] まあ関数合成の向きが右から左なのは>>707 の説明の通りだし、Haskellに限らず数学でも同じルールだからな。数学でも気持ち悪いって云う人は結構居るしまあそんなに変わった意見でもあるまい。
712 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:48:37 ] 社内コーディング規約でここにスペースを入れろとかそういうのよりは高尚が感じがするかもしれないけれど 所詮バイクシェッド 乱用すれば読みにくいし、パズルみたいにポイントフリーするのは間違ってる 数学的に綺麗綺麗とか、圏論的に自然とかというけれど、誰でも圏論がわかるわけじゃないし。 しかし、いかにポイントフリーで書くか、という事を考えると確かにおもろいよ
713 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 21:56:43 ] 亀だが >>36 >FPGAとかのHDL記述とかに応用したりしてる人いないの? Lavaがあるよ。並列性とか関係ないし、回路をそのまま関数で書くだけなんだけど。そしてVerilogより使いやすい、なんてこたーない。HDLよりましだが、副作用を書くのがまわりくどい www.cs.chalmers.se/Cs/Grundutb/Kurser/svh/tools.html
714 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 22:31:52 ] s/HDL/VHDL/
715 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:55:12 ] >>713 ArrowっぽいHDL作りたいな
716 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 18:48:21 ] Real World Haskell November 15, 2008 待ち遠しい。
717 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 22:50:22 ] 過度の並列化で複雑化するゲーム開発 コスト削減の鍵は純粋関数型言語らしい www.watch.impress.co.jp/game/docs/20080911/epic.htm
718 名前:36 ◆K0BqlCB3.k mailto:sage [2008/09/12(金) 22:54:50 ] >>717 そうだろうね。 俺はずううっと前からそう論文に書いてたけど。 だんだんpi-calculusの人気が出てきたね。
719 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 23:58:55 ] > Sweeney氏は純粋関数型言語のもつ並列処理安全性に着目しており、 >将来的にゲームプログラミングはそういった処理系に移行していくべきだとした。 >Sweeney氏はそのひな形として言語“Haskel”を挙げているが、 >ゲーム開発のメインストリームたり得る言語はまだ登場しておらず、将来に期待しているという。 なんでHaskellは駄目なんだろう。 ライブラリ含めた開発環境の問題か処理系の最適化の問題か それとも言語仕様レベルで本質的に向いていないのか。
720 名前:デフォルトの名無しさん [2008/09/13(土) 00:06:19 ] 前者じゃない?
721 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 00:09:07 ] こんなことでもないと注目せんのだな
722 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 00:48:51 ] 遅延評価に漬かりまくりで、ダメなのでは? 遅延評価って言ってみれば、後ろからの逐次でそ? 無限リスト使えないHaskellってHaskell?
723 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 07:07:42 ] LazyがいやならSMLやOCAML使えばいいだけ。何が不足よ?
724 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 08:23:12 ] >>723 前方参照,where構文
725 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 09:32:44 ] >>724 LETで何が不足よ?
726 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 10:42:16 ] >>717 ,>>719 からのコンテキストを読んでくれよ。
727 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 18:14:08 ] 質問です たとえばJavaなどではクラスのインスタンスをオブジェクトと呼びますが、 Haskellの代数的データ型に格納されたデータのことをなんと呼べば良いですか?
728 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 18:21:45 ] >>727 関数
729 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 19:00:09 ] >>727 「オブジェクト」に対応する用語は普通は「値」でいいんじゃないか >Haskellの代数的データ型に格納されたデータ これどういう意味? 型が代数的データ型であるような値のことならそのまま「代数的データ型の値」 代数的データ型の構築子に渡した値のことなら「フィールドの値」くらいか? data Point = Pt Int Int x = Pt 0 3 -- xはPoint型の値 -- xのフィールドの値は0と3
730 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 20:26:27 ] Haskellのプログラミングスタイルのことはなんて呼べばいいですか? ストリーム指向?
731 名前:デフォルトの名無しさん mailto:sage [2008/09/15(月) 20:30:20 ] 関数指向
732 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 23:55:40 ] Haskell系のShellでオススメってある?
733 名前:36 ◆K0BqlCB3.k mailto:sage [2008/09/17(水) 00:00:30 ] >>732 シェルって何のこと? 言語とは関係ないと思うけど。 シェルスクリプトのことを言っているの?
734 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:07:44 ] >>733 HSHみたいなやつ 探してみた奴だとどれも開発止まってて…
735 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:09:07 ] Haskell風構文のシェルっていくつかあるんだな、ググって初めて知ったわ
736 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:15:11 ] Haskell系の自然言語でオススメってある?
737 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:22:13 ] lojbanとか? 自然言語じゃないけど
738 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 15:52:29 ] Yiとか使ってる人いるの?
739 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 17:56:30 ] Yi って 彝 ?
740 名前:デフォルトの名無しさん [2008/09/17(水) 18:20:56 ] ぅぃ?
741 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 18:31:27 ] haskell.org/haskellwiki/Yi 使ったこと無いなぁ。
742 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 17:29:49 ] ひょんなことからerlangを勉強し始めたが、構文はともかく、思想としては面白いな。 並行指向プログラミングというのかな? このパラダイムはオブジェクト指向よりも現実志向のパラダイムのように思う。 Haskellでも並列化がうまくいけばerlangみたいな仕組みを実装できるかもしれない。 # erlangの構文は糞 糞 糞 糞杉
743 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 18:18:31 ] ぅぃゅ
744 名前:デフォルトの名無しさん [2008/09/19(金) 20:28:25 ] コンカレントハスケル?
745 名前:デフォルトの名無しさん [2008/09/19(金) 20:34:40 ] ああ、コンカレントは並行だったか・・・
746 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 11:00:42 ] >>743 私はProlog屋なので、erlangの構文のクソ部分に敏感でない。 お手数かけて恐縮だが、糞の部分を列挙していただけると有難いのだが。
747 名前:a36 ◆K0BqlCB3.k mailto:sage [2008/09/20(土) 12:04:07 ] >>742 たぶん、その思想というのはpi-calculusのことかな。
748 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 13:08:03 ] ここのみんなからするとgtk2hsって綺麗なの?
749 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 13:29:19 ] Erlangってpi-calculusベースなのか
750 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 13:56:48 ] >>746 743ではないけど、 receive...endとか、カリー化できないとかではないですか?
751 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 14:52:33 ] >>723 元記事ではSTMが挙げられてるけど、OCamlだと無くね? >>749 綺麗って何が?Gtk2Hsを使ったコード? それならあまり綺麗じゃないんじゃない。 GUIを綺麗に書くためのハイレベルなライブラリは いろいろあるけど、どれも決定打にはなってないような。
752 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 15:23:34 ] >>751 >>749 じゃなくて >>748 ?
753 名前:デフォルトの名無しさん mailto:sage [2008/09/20(土) 15:27:39 ] >>752 >>748 な俺からでもそれはわかる。
754 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 00:46:57 ] gtk2hsと言えば、 gtk_rc_parse_string相当の関数や、 gtk_widget_modify_cursor(これは新しいからか)相当の関数が見付からなくて諦めたことがあります。。 いや私の検索能力が低いだけだと思うんですが、かなり頑張ってもどうしても見つかりませんでした。。。 皆さんgtkやpango、gdkの関数を捜すときってやっぱり根性ですか? 大抵はキャメルケースにすれば大丈夫ですがそうでない時はかなり困りますよねー。。
755 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 12:17:25 ] いや、検索能力の問題じゃなくて、実際に無いんじゃない? Gtk2Hsのソースgrepしてみて無かったら無いような。
756 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 08:20:06 ] webで読んでるけどreal world haskell凄いヴォリュームだな 一週間やってもまだ終わらん 製本版はもう鈍器レベルだな
757 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 09:55:41 ] なにか面白いこと書いてあった?
758 名前:a36 ◆K0BqlCB3.k mailto:sage [2008/09/22(月) 15:02:13 ] これでしょ book.realworldhaskell.org/read/
759 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 16:29:27 ] url知らないって意味じゃなくて、自分では読む気が無いってことだよ。
760 名前:a36 ◆K0BqlCB3.k mailto:sage [2008/09/22(月) 16:37:06 ] ぱっと見た感じでは、名前の通り実際にHaskellで開発する時に「背中に手が届く」本になってる感じ。 たとえばデータベースと通信する方法とか、 GUIを作るときのライブラリとかツールとかの紹介とか、 どちらかというと「Haskell逆引きクイックリファレンス」 みたいな感じだね。 目新しいことは何もないけど、逆引きリファレンスとしてはいろんなライブラリとか紹介されていて便利かな。
761 名前:a36 ◆K0BqlCB3.k mailto:sage [2008/09/22(月) 16:39:11 ] いろいろサンプルコードも載ってるからわかりやすい。 文章の良よりコードの両方の方が多いから英語が苦手な人でもわかると思う。
762 名前:a36 ◆K0BqlCB3.k mailto:sage [2008/09/22(月) 16:39:49 ] 良 → 量 コードの両方 → コードの量
763 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 11:57:39 ] Parsec.Tokenをロードすると ERROR file:{Hugs}\packages\parsec\Text\ParserCombinators\Parsec\Token.hs:64 - Syntax error in data type declaration (unexpected `.') とでて読み込めないのですがどうしたらいいのでしょうか
764 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 12:09:05 ] >>763 Hugsを標準モードじゃなくて拡張モードで起動すればいい hugs -98
765 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 12:51:18 ] >>764 無事読み込めました。ありがとうございます
766 名前:デフォルトの名無しさん [2008/09/24(水) 15:23:46 ] do構文で、変数の使用が強制されるのはなんとかならんの? .とか$とかの気の利いたバージョンない?
767 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 15:27:56 ] 何を言ってるのかよく分からんが >>= とか?
768 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 15:36:59 ] >>=だけですっきりいけるならdo構文使わないでしょ(ってこともないか?少なくとも俺は)。 do構文でモナドを「外す」ためだけに一時変数がやたら必要になるのがイヤって話。 つまるところ>>=になっちまいそうな気もするけど、 便利な演算子なり特殊なカッコなりで、無駄な変数使わずに何とかならんかなぁ、と。
769 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 16:11:24 ] なにか具体例見せてくれ