- 1 名前:デフォルトの名無しさん [2015/04/09(木) 08:31:01.42 ID:4yjREsCN.net]
- 関数型プログラミング言語 Haskell について語るスレです。
,.-―: ̄`ー::::::::::、 /::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ < 毛の壁(岡部健)の話は禁止な 、:::::.. /:::; .,-、 l:::/、 ,―:::::::: ゝヽ- ー' 、 l::/,、ヽ l,、,、,,:、:: / ,--、,-.、_ l /::::::,、,、l l,、,、,、,、,、::、 `ー ̄-' /:::::::::::,、,、l l,、,、,、,、,、,、::ヽ /::::::::、,、,、,、,ノ:\ haskell.org (公式サイト) www.haskell.org/ 前スレ 関数型プログラミング言語Haskell Part27 peace.2ch.net/test/read.cgi/tech/1420718555/
- 611 名前:デフォルトの名無しさん mailto:sage [2015/06/19(金) 20:00:49.31 ID:rvqvJJVS.net]
- 岡部犬ってか
- 612 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 14:34:33.88 ID:yL+fCFF6.net]
- ポイントフリー信者はmapが1変数関数かもしれないと思っている
g = map f 引数 :: a -> b 結果 :: [a] -> [b] しかし決め付けやレッテル貼りを嫌うのでmapが2変数関数である可能性も否定しない 彼らにとって引数を書くことはレッテルを貼ることに等しい
- 613 名前:デフォルトの名無しさん [2015/06/21(日) 20:14:27.96 ID:HwEzsZwl.net]
- 意味ワカンネ
つうかポイントフリー信者がどうだろうが Haskellにはそもそも1変数関数しかないのだが
- 614 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 20:18:32.21 ID:RBHwsW1q.net]
- >>605
>Haskellにはそもそも1変数関数しかないのだが どういう意味?
- 615 名前:デフォルトの名無しさん [2015/06/21(日) 20:33:23.95 ID:HwEzsZwl.net]
- Haskellではa->b->c は常にa->(b->c)であって
(nullary constructorをとりあえず脇に措けば) 普通の関数のアリティは本質的に1だけだ。
- 616 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 21:08:54.24 ID:pK1SDj/K.net]
- たしかすごHにもそんな説明あったな
- 617 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 21:12:32.01 ID:7XsQ/1hl.net]
- 607を補足すると、
f :: X -> Y -> Z は 「X型変数とY型変数を取ってZ型の値を返す関数」 というより 「X型変数を一つ取って『Y型変数を一つ取ってZ型の値を返す関数』を返す関数」 ということだな。 言葉で書くと却ってわかりづらいな。
- 618 名前:デフォルトの名無しさん [2015/06/21(日) 21:12:49.77 ID:HwEzsZwl.net]
- 正確ではなかったので訂正しておく。
関数型の値としての関数は常に1引数だ。 データ構築子はそもそもこの意味の関数ではない。
- 619 名前:デフォルトの名無しさん [2015/06/21(日) 21:14:20.58 ID:HwEzsZwl.net]
- あと、関数は常に1引数なのでHaskellにカリー化はそもそも存在しない。
- 620 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 21:22:10.14 ID:7XsQ/1hl.net]
- >>611
そのように言われてしまった curry :: ((a, b) -> c) -> a -> b -> c さんの気持ちを答えよ(140字)
- 621 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 21:24:27.97 ID:Sh7VBIsF.net]
- (それは雰囲気一緒なのでそういう名前になってるのでいわゆるカリー化とはちょっと別では)
- 622 名前:デフォルトの名無しさん [2015/06/21(日) 21:40:32.89 ID:HwEzsZwl.net]
- >>612
それはカリー化でもなんでもない。 見ての通り (a,b) -> c のアリティは1だ。
- 623 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 21:42:45.93 ID:7XsQ/1hl.net]
- ・多引数関数が存在するかどうか、の議論の前に「多引数関数とは何か」を定義したほうがいい。
・立場や考えた方によって「多引数関数とは何か」は異なりうる。 ・一つの答えは「タプルを引数に持つ関数」 ・「タプルという一つの引数を持ってるだけですよね?」というツッコミ。 よーく気をつけないと「多引数関数とは何か」 という話を蒸し返してしまう。
- 624 名前:デフォルトの名無しさん [2015/06/21(日) 21:51:01.56 ID:HwEzsZwl.net]
- Haskellの関数型構築子(->)の性質から関数型の値としての
関数の引数は常に(->)の左に来る型なんだからな。 タプルを引数にとるのが多引数だと言い出せば リストを引数にとるのは可変長引数だということになる。 後者がおかしいと思うなら前者もおかしい。
- 625 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 22:16:31.58 ID:X7jEdUgs.net]
- Text.Printf 「呼んだ?」
- 626 名前:デフォルトの名無しさん mailto:sage [2015/06/21(日) 22:29:13.88 ID:yL+fCFF6.net]
- mapは単項演算を可変長引数にする
reduceは二項演算を可変長引数にする というのは別におかしくない Haskellにこだわらない人ならそう思う可能性がある
- 627 名前:デフォルトの名無しさん [2015/06/22(月) 00:13:49.02 ID:egF2isgn.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ < 排便ダン 、:::::.. /:::; .,-、 l:::/、 ,―:::::::: ゝヽ- ー' 、 l::/,、ヽ l,、,、,,:、:: / ,--、,-.、_ l /::::::,、,、l l,、,、,、,、,、::、 `ー ̄-' /:::::::::::,、,、l l,、,、,、,、,、,、::ヽ /::::::::、,、,、,、,ノ:\ /⌒\〆', `  ̄ ´ ゝ/⌒\ / ノつ\ ・ ・ /⊂ ヽ! o0○ノ / 3 \ (::::⌒ヽ / とノ\ ヽ○0o ( /、_ノ\ Y `(_、_) / \´ )゚ \_) `ヽ : :;;*:; : : : | (_ノ 人__;;:;;、___ノ ヽヽ ヽヽ ;:;;:;;:;,, ──┐ | | ──┐ | | ∬ ;;:;::.;::.::;::..:;:..: ∬ / | | /. | | ・〜 ;::;.:;:;:;:;:.:;:.:::.;:;:;.:.:.: ノ ノ ┐ ノ ノ ┐ ∬;;;:::;;;:;:.:;:.::.:;;.:.;.:;.:; ∬ ┴ ヽヽ ┴ :"
- 628 名前:デフォルトの名無しさん [2015/06/22(月) 07:30:14.32 ID:7ItaFFjL.net]
- 不毛な議論はやめろ
- 629 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 07:38:37.78 ID:8relXNjB.net]
- 毛の壁だから不毛な訳ない
- 630 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 08:33:39.76 ID:jkkSdEVt.net]
- 不毛な議論はやめて早く契約をという
きみたちはいつもそうだ
- 631 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 10:49:06.51 ID:HczZ6Mad.net]
- >>607
有り体に言えばそうなるわな
- 632 名前:デフォルトの名無しさん [2015/06/22(月) 16:22:57.80 ID:uDj89vD5.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ 、:::::.. /:::; .,-、 l:::/、 :::::::: ゝヽ- ー' 、 l::/, ,:、:: / ,--、,-.、_ l / 、::、 `ー ̄-' / 、::ヽ /: /´⌒´ヽゝ ── 'ヽ⌒ヽ / ィ , ヽ , )` `ヽ / ノ^ ー '` ー 'ヽ ゙i .. ノ ,,,ノ Y´゙ ) ( < | ! / ヽ_ \ ノ_/ ヽ、__ ヽ.ー @ ノ ソ、 〈J .〉 ヾ、.::;;;;;;::.ノ |ヽ-´ /"" ;ミシミッ .| レ .イ、_∪ノ .リ .,ゝ ,ノ | ' ヽ ノ / ` レリ i´ リ i / `、 i' 〉 イ 〉 | / ::| (_ヽ \、 (。mnノ `ヽ、_nm
- 633 名前:デフォルトの名無しさん mailto:sage [2015/06/22(月) 20:02:55.77 ID:yB0CTLEJ.net]
- 毛の壁を風化させない勢、なんなんですかね
- 634 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 02:22:17.45 ID:wiF7wKM1.net]
- rubyで言うところのcase文はhaskellでどう書くとスマートですか?
case x #長さ1の文字列とする when 'a'..'z' ... when '0'..'9' ... when '#' ... else ... end
- 635 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 05:33:12.62 ID:EWNumgnc.net]
- 引数の性質で場合分けするなら素直なのはガードだけど
もっとかっこいいやり方はあるかも f :: Char -> a f x | x `elem` ['a'..'z'] = | x `elem` ['0'..'9'] = | otherwise =
- 636 名前:デフォルトの名無しさん [2015/06/23(火) 11:17:40.69 ID:30kOauSN.net]
- reduce関数やrange関数やmap関数は、
命令型のループでしか書けません。なぜならば、ノイマン型コンピュータという ハードウェアは究極的には命令型でしか動作しないからです。 関数型の機械語なんて存在しません。
- 637 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 12:56:24.51 ID:HcqKhimH.net]
- オブジェクト指向言語の機械語も存在しないけどな。
究極的には人間は原子でてきてますとか言われてふーんとかはーとかしか思わんし 目の前
- 638 名前:フ人が美人かどうかは原子関係ないすね。 []
- [ここ壊れてます]
- 639 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 13:34:07.31 ID:DUXK3D31.net]
- >>628を見てこれを思い出した↓
>あのさー、「二次元はただの絵」なんて言葉には何の意味もないわけよ。当たり前すぎる。 >ただの絵って、そりゃ絵だよ。そんなの誰にでもわかるって。 >これは言い換えるとね、例えば友達が彼女の写真を見せてくれたとして、 >「これはただのインクの集合だ」と言ってるのと同じなわけよ。 >もっと言うと、友達の恋人を指差して、「こいつはただのタンパク質だ」と言ってるのと同じなわけよ。 >別に間違ってないよ。写真はインクだし、人間はタンパク質だ。でもそれがなんだっての? >インクだから感情を抱くのは間違いだ、タンパク質だから好きになるのは間違いだ、とでも言うの? >それはちょっとバカすぎるね。バカすぎる。「二次元はただの絵」ってのはそういうのと同じなんだよ。 >好きになるのは人格としての、存在としての彼女だろうが。物理的構造なんてどうだっていいんだよ。 >そんな当たり前のこともわからないわけ?
- 640 名前:デフォルトの名無しさん [2015/06/23(火) 13:47:23.60 ID:6v7jQlnd.net]
- ノイマン型じゃないアーキテクチュアとか普通に存在するし、
FPGAのお蔭で個人レベルでもできるんだが。
- 641 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 14:35:28.11 ID:GZlJHPMK.net]
- まあ関数型言語が機械語のようなもので定義されることが多いのは事実だよね
あとは 「定義の循環なんて存在してはならない」 という思い込みを否定できるかどうか それさえ否定できれば、逆に機械語を関数型で定義する可能性も理解できると思う
- 642 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 14:49:11.65 ID:rMQdQ9WV.net]
- import Data.Char で isAlpha とかが使えるからちょっとだけ楽になるね(構造としての格好良さではない)
- 643 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 14:50:45.63 ID:5/w+bsnn.net]
- >>628は毛の壁ブログのコピペ
kenokabe-techwriting.blogspot.jp/2015/04/amazon_28.html
- 644 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 18:05:36.94 ID:x4Ozc/Jn.net]
- エロ漫画でヌいてる奴に、「それむっさいオッサンが描いた絵だよ」って言って萎えさせる奴いるけどさ、
むっさいオッサンが生み出したものでヌいておかしいっていうなら、そのむっさいオッサンに可愛い娘さんがいたらセックスしたいと思わないのかね
- 645 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 19:55:42.17 ID:909KpOvq.net]
- 定義が循環しちゃまずいだろ
- 646 名前:デフォルトの名無しさん [2015/06/23(火) 21:15:50.96 ID:6v7jQlnd.net]
- >>632
>まあ関数型言語が機械語のようなもので定義されることが多いのは事実だよね なにいってんだか意味がわからん。 関数型言語の意味論が機械語で与えられた例なんかないだろ。
- 647 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 21:17:42.47 ID:AaIPqvR+.net]
- 多分定義と実装取り違えてる
- 648 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 21:37:51.41 ID:rcOEv9Ao.net]
- ひょっとして(e?)BNFのことを言ってるのかな?
- 649 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 23:28:11.76 ID:GZlJHPMK.net]
- 仕様書に未定義とか書いてあるのは
完全な定義は実装で決まるという意味なんじゃないの
- 650 名前:デフォルトの名無しさん mailto:sage [2015/06/23(火) 23:35:23.41 ID:FjdLJNiv.net]
- その実装にはどんな非決定的な穴があってもいいんだよ
- 651 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 00:16:40.45 ID:KkHlevhV.net]
- >>640
それは実装依存で未定義とは区別することが多い
- 652 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 00:26:39.98 ID:MR5fwWu8.net]
- 実装が定義、ソース読め
ってことじゃないの
- 653 名前:デフォルトの名無しさん [2015/06/24(水) 01:16:05.07 ID:k2PpIK+f.net]
- >>643
そんな(少し前までの)Rubyみたいなこと言われても。 >>640 未定義っつうのは文字通り未定義。 言語仕様にないので、なにが起きようが関知しない。 未定義動作の結果オレの財布が空になっても富士山が噴火しても構わない。 というか、もっと正確に言えば、未定義部分は言語仕様がないのだから そこがどうなっていようが、それはその言語の「実装」とすら言えない。
- 654 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 02:27:11.04 ID:zaWMLH1h.net]
- >>640
(まともな言語における)未定義ってのは、その部分については、各実装によって内部表現が異なっても構わないという明言だよ 要は速度と効率のために各ベンダに独自の最適化が許される、意図的に定義されない部分 そういう未定義部分に依存しないコードを書くのはプログラマの責任
- 655 名前:デフォルトの名無しさん [2015/06/24(水) 02:58:03.53 ID:k2PpIK+f.net]
- そりゃ意味と機能の問題を取り違えてる。
未定義動作を許すことが何の役に立つかと未定義動作そのものが何かは別の問題だ。
- 656 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 07:27:51.62 ID:uN9f53jR.net]
- 現実に起こる問題といえば
未定義の部分はコンパイラ作成時点でテストして保証されてないから 出力が一意になるかわからんし最悪実行不可能なファイルが生成されるかもしれないってくらいか
- 657 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 07:37:20.43 ID:NJ59k6EW.net]
- >どんな非決定的な穴があってもいい
>オレの財布が空になっても富士山が噴火しても構わない 実装がどうなるか予知できないと書いてあるだけだが 「予知能力がない」ではなく「全知全能の筆者が許可した」と解釈すると大変な事になる
- 658 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 11:36:01.73 ID:Dk9G0+2n.net]
- 数学で
0以外の実数を0で割れば解なし 0を0で割れば未定義 みたいな
- 659 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 13:33:31.02 ID:q/iymKMR.net]
- それはどっちも未定義
- 660 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 13:41:36.12 ID:RcaJrYdV.net]
- 仕様が未定義ならどんな実装してもかまわないので「0を0で割ると富士山を噴火させる」実装もOK
というだけ。
- 661 名前:デフォルトの名無しさん [2015/06/24(水) 15:06:59.29 ID:4h3P/eVf.net]
- twilog.org/ohagiya/search?word=UCLA&ao=a
- 662 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 18:30:23.37 ID:jBd8hVQL.net]
- 非決定性プログラミングしたい場合
Lisp系だとambや継続使って解を1つみつけて終了だけど モナド使うと全ての解を列挙できるってことでいいのかな
- 663 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 21:39:12.60 ID:RcaJrYdV.net]
- >>653
わりとマジであなたが言ってることイミフ。 「非決定性」だとか「継続」だとか難しげな言葉を振りかざすのではなく 基礎からきちんと学ぶことをおすすめします。
- 664 名前:デフォルトの名無しさん mailto:sage [2015/06/24(水) 22:58:58.61 ID:+CIvGoel.net]
- >>653
妙な思い込みをしているようだけど… グレアムのOn Lispに、簡易Prologみたいなのを実装する非決定性プログラミングの例が載ってるから、 ちょっと勉強してみたら?
- 665 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 01:30:55.42 ID:L5oPYlD8.net]
- 二重ループの内側で無限に列挙してしまったら外側は1個めでフリーズする
Haskell使ってもこの問題はなくならない
- 666 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 01:49:40.68 ID:tWs5pbMG.net]
- それ、ただの単純ループですやん
非決定性ともバックトラックとも遅延評価とも関係ない…
- 667 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 08:02:56.67 ID:L5oPYlD8.net]
- というか、ただの問題だから
出題範囲とか関係ない
- 668 名前:デフォルトの名無しさん [2015/06/25(木) 09:34:06.79 ID:En38UG6V.net]
- 質問なのですが、HASKELLはJAVASCRIPTと比べてどのぐらい力強いですか?
- 669 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 10:42:57.71 ID:GMFUAARU.net]
- >>659 (haskell の戦闘力は) 53万です
- 670 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 12:46:25.61 ID:jSlSTYLT.net]
- CPUヘビーなことは向かないなんて泣き言いわない
- 671 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 13:31:24.59 ID:X9iBWgn+.net]
- >>659
JavaScriptがフリーザだとしたら、Haskellは18号くらい
- 672 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 16:41:37.97 ID:YBkNncXP.net]
- 以下の関数をCPSに書き換えよ。
とか、その後の難しい話の下準備の為に修行できるドリルみたいなサイトありませんか? なるべく解答付きで。
- 673 名前:デフォルトの名無しさん [2015/06/25(木) 17:09:47.33 ID:B9JLKsO8.net]
- >>663
qiita 7shi で検索。
- 674 名前:デフォルトの名無しさん [2015/06/25(木) 17:20:28.66 ID:B9JLKsO8.net]
- あ、あとCPSは階乗とフィボナッチのCPS版を見つけてきて、
fac(3)とかfib(4)あたりを手で簡約して見ると原理がわかる。 いったん理解すれば、あとは殆ど機械的に変換できるようになるよ。 そういや最初にCPS理解したときはその後しばらくCPS猿みたいなコード書いてたな……
- 675 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 17:32:34.99 ID:5pnqx1ov.net]
- でも a -> b -> c を a -> b -> m c に書き換えるのは
arityが見えるとかいう意味不明な能力がないとできないよね
- 676 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 21:38:45.58 ID:YBkNncXP.net]
- stack がパッケージの依存地獄を解決すると聞いて駆けつけました!
- 677 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 21:40:43.48 ID:YBkNncXP.net]
- >>664
頑張ります
- 678 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 23:22:04.84 ID:LfFLypOB.net]
- Freeモナドを上手に役立ててる例、ってなんかないですか?
- 679 名前:デフォルトの名無しさん mailto:sage [2015/06/25(木) 23:33:50.49 ID:eM2m5jCT.net]
- 不便だと思うところに役立てればいいんじゃないかな
- 680 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 00:28:21.26 ID:bFSe+PPP.net]
- >>670
料理のレシピのためのミニ言語、は楽しくてよかったんですが、便利か、実用的か、っていうとそうでもない感じがしました。 モナド的側面、つまり、前のコマンドの結果に応じて後に続くコマンドを変えられる、って性質を有効利用できれば良い、と思うのですが、いい案が浮かばず… たまごを焼きすぎたらスクランブルエッグは諦めてたまご焼きにする。 うーん
- 681 名前:デフォルトの名無しさん [2015/06/26(金) 01:05:51.23 ID:sGcqyMBf.net]
- Freeモナドが使えそうなところでは大抵の場合、
finally taglessな表現/Symanticsを使う方がいい。
- 682 名前:デフォルトの名無しさん mailto:sage [2015/06/26(金) 20:39:02.22 ID:hymME7nU.net]
- なんとなくわかった
returnとjoinを作れないまたは作れるが使いたくない場合にFreeモナドを使うんだろ
- 683 名前:デフォルトの名無しさん [2015/06/28(日) 07:58:01.92 ID:UfM5xTqU.net]
- ほざけ無能ども
- 684 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 09:29:10.20 ID:PsA9Isd2.net]
- >>674
どうした突然。何かつらいことでもあったのか。
- 685 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 14:22:33.44 ID:eK2mTTNw.net]
- HaskellerはOCamlerを見下してますか?
- 686 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 14:45:38.67 ID:oAeIj0m7.net]
- HaskellerかつOCamlerですが何か?
- 687 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 15:08:18.01 ID:CsAfdxFY.net]
- オーキャメルってすごいの?
- 688 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 15:45:29.76 ID:sCkqyjMf.net]
- ほとんど同じ
型が違うとか批判ばかりで代案を出せないコンパイラと、そいつに逆らえないプログラマ 全然すごくない
- 689 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 17:40:06.78 ID:A43RH85D.net]
- 開発環境は、その上で作られた成果物と、
作るのに使ったリソース(人、時間、金など)で比較すべき まぁ、たいした成果物が挙げられないようでは話にならんがな
- 690 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 18:22:42.20 ID:sCkqyjMf.net]
- どうせそう言われるだろうと思って
言われても平気な言語を二つも三つも覚えるんだよね 観賞用、保存用、予備みたいなあれ
- 691 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 18:45:49.13 ID:TzgnuxBg.net]
- 寄らば大樹の陰(笑)
- 692 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 20:48:17.29 ID:sCkqyjMf.net]
- 同じのを三個買ってきたのに使用頻度のデータを取るのは時間と金の無駄だろ
- 693 名前:デフォルトの名無しさん [2015/06/28(日) 22:57:53.15 ID:GoQYkhEF.net]
- >>677
あなたはHaskellを知ってるOcamlerです。Haskellerではありません。
- 694 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 23:08:27.40 ID:PermaxaH.net]
- 宗教かよ
- 695 名前:デフォルトの名無しさん mailto:sage [2015/06/28(日) 23:24:45.18 ID:CsAfdxFY.net]
- じゃあ、ここでEmacsとVimの雌雄を決しようぜ
- 696 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 05:59:50.21 ID:Qi5/2Z+9.net]
- Ocamler = 岡村
- 697 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 06:43:23.70 ID:brwnweVx.net]
- >>684
調査する側が答えを決めてるなら世論調査とかビッグデータとか無意味だな
- 698 名前:デフォルトの名無しさん [2015/06/29(月) 10:57:15.25 ID:8+Jbzv8W.net]
- >>679
>型が違うとか批判ばかりで代案を出せないコンパイラと、そいつに逆らえないプログラマ >全然すごくない 才能を感じるw
- 699 名前:デフォルトの名無しさん [2015/06/29(月) 20:28:54.62 ID:UsldY24Z.net]
- おまえらえらそうにほざいてるけど、HaskellでGUIアプリ作れんの?
- 700 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 20:34:47.53 ID:I6LM+XSd.net]
- >>690
ほざいてないし作れない
- 701 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 22:11:01.07 ID:6j3t6Ku/.net]
- ほざいたし作った
- 702 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 23:37:46.91 ID:dOBb6but.net]
- 今 Haskell で GUI アプリを作ることにどれほどの意味がある?
無駄に苦労するだけで、たいしたメリットは得られないと思うが。 C# や Java などの方が意図したことを素直に書けると思うぞ。
- 703 名前:デフォルトの名無しさん [2015/06/29(月) 23:43:17.21 ID:8+Jbzv8W.net]
- >>690
作れるし作っているが楽しくはない。
- 704 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 23:46:32.90 ID:QGo7kC4a.net]
- GUI原理主義なんなの?
- 705 名前:デフォルトの名無しさん mailto:sage [2015/06/29(月) 23:56:20.64 ID:NIwVXw8K.net]
- (Haste で javascript にコンパイルして)作ってる
- 706 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 00:41:54.66 ID:xJJVLGS/.net]
- >>695
EmacsとVimを懲らしめる主義(適当)
- 707 名前:デフォルトの名無しさん [2015/06/30(火) 01:13:42.18 ID:Jhz+vTOP.net]
- Autocadは基本コマンド。
- 708 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 07:58:21.93 ID:c40dQzwL.net]
- >>693 状態のセーブがすげー簡単
苦労は特にない
- 709 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 08:02:38.09 ID:c40dQzwL.net]
- というかHaskellだろうが何だろうが
GUIなんかロジックの部分に比べれば簡単
- 710 名前:デフォルトの名無しさん [2015/06/30(火) 12:03:29.96 ID:xY5YXWOJ.net]
- そうやって【自称関数型】のヤカラはいつも逃げる
GUIで使えるアプリも書けない
- 711 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 12:19:59.61 ID:avn7235t.net]
- Gtk2hsとか
- 712 名前:デフォルトの名無しさん [2015/06/30(火) 12:55:10.53 ID:g8mVBFW2.net]
- いや普通にwxHaskellでもなんでも使って書けるから。
ただ抽象化が巧く嵌らないから楽しくないだけ。
- 713 名前:デフォルトの名無しさん [2015/06/30(火) 15:13:39.82 ID:X6br0/jB.net]
- ウィンドウシステムで動く以上、オブジェクト指向が一番いいんじゃないの。
ウィンドウってオブジェクトそのものだし。
- 714 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 17:14:12.45 ID:vxf+DpiB.net]
- メッセージを受け取る関数 Message -> IO () で引数をパターンマッチすればいいよ
Cのswitch文を使うウィンドウシステムと同じ
- 715 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 18:20:38.25 ID:c40dQzwL.net]
- GUIどころかOSごとHaskellで書いた例:programatica.cs.pdx.edu/House/
- 716 名前:デフォルトの名無しさん [2015/06/30(火) 18:42:24.07 ID:X6br0/jB.net]
- >>706
2chで作ってたOSにも及ばない感じに見える。 世界の一流研究者が集って10年かけて作ったものがこれでは、Haskellの 実力が低いように見える。 ドヤって感じで出されると余計。 少なくとも2chで作ってたOSは、もう少し実用性があった。
- 717 名前:デフォルトの名無しさん [2015/06/30(火) 18:51:10.78 ID:X6br0/jB.net]
- 昔、JSはCの二倍速いとか、JavaはCの20倍速いとか言われてて、ベンチマークが
2chのスレに貼り付けられてた。 今のHaskellは同じような感じがする。 JSは、アプリケーションを拡張するのに使えばとても楽な言語だし、Javaは 互換性やわかりやすさに焦点をあてた言語。 良い部分を宣伝したらいいと思うのだけど、どうも原理主義の人は欠点を 否定することに一生懸命になる。 Haskellはこういうことに向いてないね、でも出来ないわけじゃないよって 位で良いんじゃないのかな。
- 718 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 19:02:56.27 ID:c40dQzwL.net]
- >>706 言いたいことはわからなくもないが全然「一流研究者が集まって」ないからw
- 719 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 19:04:08.01 ID:c40dQzwL.net]
- >>707 のまちがいスマソ
- 720 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 19:10:15.18 ID:9foLA8yU.net]
- 2chのOSってhigeponが作ってたmonaでしょ。目的が違うし、実用性も同程度だと思うが。
そういえばhigeponさんも関数型erになったが最近どうしてるんだろう
- 721 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 19:55:09.60 ID:FWhQ2ahg.net]
- Haskellが得意とする(向いている)アプリケーションとは何でしょうか。
また、なぜそれが他言語に比べてHaskellが有利だと言えるのでしょうか。
- 722 名前:デフォルトの名無しさん [2015/06/30(火) 20:01:42.67 ID:g8mVBFW2.net]
- >>712
構造を持ったデータの処理・操作。 理由は人智を超えない範囲で充実した型システム。
- 723 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 20:34:52.77 ID:vxf+DpiB.net]
- リスクの高いアプリケーション
得意なことは何かではなく最悪のケースは何かを考えること 理由は型システム
- 724 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 20:54:40.33 ID:FWhQ2ahg.net]
- >>714
リスクというのは人命ですか? もしかして医療関係のアプリケーションでよく使われていますか?
- 725 名前:デフォルトの名無しさん mailto:sage [2015/06/30(火) 21:54:36.59 ID:vxf+DpiB.net]
- 人命というのは何か違う気がする
単に死ぬことと意図的に殺すことを区別できなくなる
- 726 名前:デフォルトの名無しさん [2015/06/30(火) 21:57:27.47 ID:X6br0/jB.net]
- F-35にHaskellが使われたなら信じる。
- 727 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 00:19:00.28 ID:hCLvX6t9.net]
- >>699
>> 状態のセーブがすげー簡単 これどういう意味? MonadIOの中だったらどこでもliftIO でファイル保存アクション実行できるよ、ってこと?
- 728 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 08:39:27.15 ID:tJW6CsdE.net]
- >>704←固定観念に囚われてる愚か者の事例。
- 729 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 08:49:50.77 ID:wl+QWyy/.net]
- ちょこっとかじった初心者ですが、
型システムのおかげでバグが出にくいっていう長所は GUIアプリ作るときにも活かされますか?
- 730 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 09:37:31.97 ID:I91Dcp9K.net]
- >>720
Haskellつかったらバグが自動的に減るのではなく、 強力な型システムのお陰で、型レベルのバグがコンパイル時に 検出できるだけ。Cなんかではポインタへの誤ったキャストが コンパイルを通ってしまい実行時(システムが稼働したとき)にようやく 発見されるという惨事が相次いだので、コンパイル時に前倒し してエラーを補足できるという点が期待されていた。 現実には型が合っていても実装を間違うことはあるので、 Haskell使ったら「自動的に」高品質になるというのは完全嘘だと思ってる。
- 731 名前:デフォルトの名無しさん [2015/07/01(水) 10:28:08.57 ID:tOajYpeJ.net]
- 自分でHaskell書いたことのない奴が多すぎだろ
713くらいしかまともなこたえがない
- 732 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 11:45:24.51 ID:gMCljQ/I.net]
- >>720
GUIはコロコロ仕様が変わるので むしろバグっぽいコードも書けるというメリットのほうが大きい
- 733 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 11:45:40.65 ID:zqTVEjze.net]
- 型が強力なので、バグ以前に、適切な型を考えて、それに従って関数書けば
自然にプログラム書けて楽なことが多い。Type-directedプログラミングというか。
- 734 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 11:48:56.78 ID:zqTVEjze.net]
- >>718 いや単に状態が陽だから、何をセーブすれば良いかわかりやすい、というだけ。
まあGUIアプリに限った話ではないか。
- 735 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 12:00:05.77 ID:XEDFaQMZ.net]
- テスト駆動とかだったらテストをHaskellで書く筈だが
Type-directedはHaskellを書く機会を減らしてしまう諸刃の剣
- 736 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 14:49:29.48 ID:rMwDHu3x.net]
- Haskellで書けばバグが完全に駆逐できるという話をよく聞く。
Haskellは並列化が効率的に行えるのでC++の10倍速いと言う記事を見た。
- 737 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 16:22:48.22 ID:YQJkkFEW.net]
- リスクの最たる例が人命というなら、地球を一人の人間と捉えた場合、経済はその血流であろう。血流を止めると地球さんがヤバい
経済界に寄与するソフトウェアを他言語版より多く送り出しているならばHaskellはリスクと戦う最前線の言語だといえよう
- 738 名前:デフォルトの名無しさん [2015/07/01(水) 18:22:25.85 ID:NjN/zNsy.net]
- で、おまえらGUIアプリ書けるのか?
Haskellでカットアンドペーストできるエディタやペイントソフト書けんの?
- 739 名前:デフォルトの名無しさん [2015/07/01(水) 18:22:57.88 ID:NjN/zNsy.net]
- おまえらは「机上」でしか語れない
- 740 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 18:35:28.08 ID:wHMLdS0x.net]
- クリックカウンターおじさんのエミュレーションやめろ
- 741 名前:デフォルトの名無しさん [2015/07/01(水) 18:38:03.08 ID:tOajYpeJ.net]
- GUIライブラリのコンポーネント使っていいなら誰にだって書ける。
もちろんHaskellでも問題なく書ける。エディタでバイト列収納しとくための ロープから実装しろという話ならHaskellはかなり有利だ。
- 742 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 19:31:24.61 ID:W0dcBNHQ.net]
- >>730
確かに、机上の空論からのぶっつけ本番は非常に危険だ しかし机上を危険視するのは間違っている
- 743 名前:デフォルトの名無しさん [2015/07/01(水) 19:53:03.17 ID:XO0z7h0V.net]
- そもそも情報処理って机上がものいう世界だろ
- 744 名前:デフォルトの名無しさん [2015/07/01(水) 19:53:39.62 ID:XO0z7h0V.net]
- クリックカウンターおじさん本人なんじゃないか?
- 745 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:02:00.78 ID:I91Dcp9K.net]
- 机上の空論よりヘボくても動けるものを作れる奴が偉いとか典型的なマウンティング
- 746 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:16:46.99 ID:zqTVEjze.net]
- >>726 QuickCheck?
- 747 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:18:47.95 ID:zqTVEjze.net]
- >>727 それは嘘かhype
- 748 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:25:01.06 ID:N2f2t6hF.net]
- >>732
Haskellが凄いという話はよく聞く
- 749 名前:し、現代的なGUIエディタの実装に超有利という話も出てきた。
ところが、Haskellで書かれた著名なエディタは無いし、ライブラリやコンポーネントを使うなどと言うけど、 そのライブラリやコンポーネントはHaskellで書かれた著名なものがあるの? 極端な話、そんなに有利なら、Haskellで書かれたコンポーネントをそして APIを他の言語から使ってるんじゃないの。 凄い凄いという話をよく聞くものの、最終的にC/C++で書かれたライブラリを 呼び出せますよって話になる。 C/C++を呼び出してて本当にHaskellの凄いところであるゼロバグを実現できるの? 言っとくけど、C/C++は容易にバグが紛れ込むし、Haskellのようにゼロバグなんてことは無いよ? Haskellから呼び出すだけで、C/C++のバグも本当に消えるの? [] - [ここ壊れてます]
- 750 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:30:36.90 ID:WaFLqKtq.net]
- ぐうの音もでん
- 751 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:35:48.17 ID:hkSyx5v6.net]
- C/C++ラッピングに頼るのは、国産OSを開発せずWindowsやUnixやLinuxに頼るようなものだ
Haskellネイティヴなライブラリへの置き換えが必要ではないか
- 752 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:40:40.77 ID:RlBRpOsX.net]
- >>739 誰もそんなこと言ってない。
どこかよそで読んだなら、まともな話かどうか判定するからソース教えて
- 753 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:45:43.16 ID:hhCpaelW.net]
- この世界、技術的に良いものが必ずしも広まらないことは日常茶飯事。
逆に、マイナーだから優れている、も成り立たないが。
- 754 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:56:44.98 ID:4S8xRTlr.net]
- >>739
Haskellで自動回避できるのは型の不整合にまつわるバグであって、算法上のバグを回避できるわけじゃあないよな システム記述言語としてのHaskellは、他言語に比べて特に凄いということはないよ 動かしながらバグを取る必要があるのはC/C++と同じ
- 755 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 20:59:56.29 ID:WaFLqKtq.net]
- まあ、最近Facebookが出して世間を賑わしてるリアクティブプログラミングも元はHaskellで作られたやつだ。
あと、テストライブラリのQuickcheckも色んな言語に輸出されてるね。 思うんだけど、Haskellerのみんなの興味が、売れるアプリ、広く使われるソフト、 で必要とされるもんとズレてんじゃないかな。 1. その言語を使える技術者の確保が容易 2. ハード(スマホ)の最新機能がすぐ使える、 ドキュメントが豊富
- 756 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:46:09.54 ID:SBuzyDQs.net]
- ArrowがあればMonadは要らんのやな
最初からArrowにしとけばよかったやん
- 757 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 22:54:31.49 ID:hkSyx5v6.net]
- 元はHaskellで作られたのに実践は他言語だったの?
Haskellは何か実践的開発上の問題を抱えてるの?
- 758 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 23:08:08.48 ID:1n3wggjU.net]
- つまんない煽り愛してないでまともな話しろ
- 759 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 23:09:21.21 ID:WaFLqKtq.net]
- >>747
もちろんHaskellのリアクティブライブラリもそれなりに使えるもんだったし、以降今に至るまで派生ライブラリがたくさん作られた。 でも、javascriptの方がより賑わっていて(開発者が多くて)Facebookにも資金力がとても高い、ってことさ。 つまり、Haskellの弱さは人がいないことだ、と俺は思う。 なぜ人がいないかは、理由は色々あるけど、外から見て何が得意なのかがよくわかんないつーのが大きくて、それはHaskellでの目に見える成果があんまり無いからで、その理由は人がいないからで、つまり
- 760 名前:デフォルトの名無しさん mailto:sage [2015/07/01(水) 23:32:51.19 ID:W0dcBNHQ.net]
- >>747
逆に他言語で実践できない部分にガラパゴス化という問題があるとも言える ガラパゴスが強いと思うか弱いと思うかは人それぞれ
- 761 名前:デフォルトの名無しさん [2015/07/01(水) 23:50:13.91 ID:j1v8qj3k.net]
- つまりクリックカウンターおじさんの言ってることは正しい面もある、と?
- 762 名前:デフォルトの名無しさん [2015/07/02(木) 01:00:22.82 ID:xB5xsyxT.net]
- 言語仕様の話がしたいのか、ライブラリ群の話がしたいのか。
- 763 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 01:43:36.68 ID:0H4A+sBi.net]
- 技術的内容を理解していない知ったかぶりの言葉遊びは無用。よそでやれ
- 764 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 06:15:08.75 ID:0QJ6vZJG.net]
- 言葉遊びをやめさせるには沈黙するインセンティブが必要
黙秘権とか 逆に、対案を出せなど沈黙しないことが強く求められれば言葉遊びはもっと酷くなる
- 765 名前:デフォルトの名無しさん [2015/07/02(木) 09:19:10.46 ID:RsQjnldo.net]
- ”クリックカウンターおじさん”という名誉棄損の呼び名を確認。
- 766 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 09:50:57.63 ID:L8xarZNp.net]
- クリックカウンターのような状態遷移をHaskellでは作れないという批判?
- 767 名前:デフォルトの名無しさん [2015/07/02(木) 10:03:54.46 ID:u7x11Nqb.net]
- クリックカウンターおじさんの問題提起については評価しないとだめだな。
- 768 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 10:28:08.52 ID:zhB7tSAg.net]
- 環境構築(cabal)がクソでライブラリを探すのも入れるのも更新するのも面倒くさいってのも有ったんじゃない
Stackでどうなるか
- 769 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 11:10:25.42 ID:e+SQ5knv.net]
- 著者が挙げている「クリックカウンター」や「お絵かき」の類を作成するのに特別なexpertiseは不要で、
単に使用するGUIライブラリ・グラフィックスライブラリのドキュメントが読めれば充分なので、 その趣旨は私にはまったく判然としません(当該の記事で著者がOCamlで「お絵かきロジック」を 実装してみせよと要求する一方で自身ではJavaScriptによるそれを公表していない点も気になります)。 もちろん、OCamlであれHaskellであれ破壊的代入の類の副作用を使用せずに書くのもなんら困難ではありません。
- 770 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 13:57:23.04 ID:y1SlVF6x.net]
- 字数増やせば賢く見えるわけじゃないんですよ
- 771 名前:仲本だいすけ [2015/07/02(木) 15:06:12.36 ID:ZQFEgiVc.net]
- あの疑似科学野郎を黙らせるのになぜ半年もかかったのか?
- 772 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 17:11:55.72 ID:L8xarZNp.net]
- >>758
環境のクソさのお陰でわりと布教しづらかったので stack にはマジ期待してる >>759 なんら困難ではない。。。かなぁ???
- 773 名前:デフォルトの名無しさん [2015/07/02(木) 17:35:08.64 ID:xB5xsyxT.net]
- 破壊的代入なしで書くのは別に困難じゃないだろ。
入出力そのものを副作用だと言い出すならどんな言語でも無理だしな。
- 774 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 17:46:38.81 ID:FcRiDZyX.net]
- >>759
当事者ご降臨ですかw 確かに保身第一、全く相手にしてませんが何か?っていう答え方だな
- 775 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 18:22:32.80 ID:aW/wUO6R.net]
- >>761
おまえらの不徳の致すところ
- 776 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 18:30:48.79 ID:e+SQ5knv.net]
- おいおい、単に qiita.com/nonstarter/items/2763f5d85f2b8df3b18b からのコピペだぞ。検索もできんのか…
- 777 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 18:55:57.21 ID:y1SlVF6x.net]
- 宣言型プログラミング言語スレで脳内設定エスパーしろとな
- 778 名前:デフォルトの名無しさん [2015/07/02(木) 19:00:17.41 ID:xB5xsyxT.net]
- Ocamlアイドル @no_maddo 24時間
追記部分があるのを知らなかった、めっちゃ面白かったです 関数型言語 - 『関数型プログラミングに目覚めた!』のレビュー(Day-1) on @Qiita qiita.com/nonstarter/items/2763f5d85f2b8df3b18b … kenokabeさんの謎クリックカウンタとお絵かきのネタは仙台でも大人気だ!
- 779 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 19:26:05.17 ID:gqhA8KsA.net]
- これが何に使えるのかよくわからない。
- 780 名前:デフォルトの名無しさん mailto:sage [2015/07/02(木) 21:46:14.33 ID:E90eWw9y.net]
- >>766-767
その程度のために Googleモナドを持ち出すなど軟弱な
- 781 名前:仲本だいすけ [2015/07/03(金) 01:48:03.52 ID:RZmOyo0m.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ 、:::::.. /:::; .,-、 l:::/、 :::::::: ゝヽ- ー' 、 l::/, ,:、:: / ,--、,-.、_ l / 、::、 `ー ̄-' / 、::ヽ /: r‐''''^¨^⌒ ̄ ̄ ̄ヽ ,ノ`, \ ノ/ ヽ ι.} λ ) ヽ(,. ノ! r' ( l .,/ ノ,,,,,,,,,,,,,,,,,,,,,,,,,,,,丿へ ノ ,) ( ∵ ∧∵ /,,丿 \,,,,/人\__ノ / ( ) (__) ( ) 《 l (___) 《 ̄ ̄》 《__(____) 《____》
- 782 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 03:37:23.69 ID:aag7hyI7.net]
- 180°回る首
- 783 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:29:08.65 ID:8+5j5k8x.net]
- >>761
相手が弱者だと思って戦いを始めるやつは撤退する口実を作れないから泥沼化する 強敵ならいつでも撤退を正当化できるのに
- 784 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:38:57.07 ID:R0ApVOfB.net]
- >>763
入出力は副作用でしょ普通 入出力無しにGUIを描くと言ってるのと同じで矛盾してる
- 785 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:39:40.10 ID:uImfavx2.net]
- あほか
- 786 名前:デフォルトの名無しさん [2015/07/03(金) 08:41:04.32 ID:wl7u/SNJ.net]
- >>774
意味論による。
- 787 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 08:46:11.05 ID:R0ApVOfB.net]
- >>776
言ってる事が理解できないので詳しく 入出力で参照透過性を維持できる説明もよろ
- 788 名前:デフォルトの名無しさん [2015/07/03(金) 09:04:39.28 ID:wl7u/SNJ.net]
- >>777
IOモナドの仕組みくらい自分で調べたらよろしい。 そして、グラフ書換系のどこにも副作用なんかない。
- 789 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:11:48.16 ID:R0ApVOfB.net]
- >>778
グラフ書換系はGUIとは関係ないだろう はぐらかさないで説明ヨロ
- 790 名前:デフォルトの名無しさん [2015/07/03(金) 09:15:30.38 ID:wl7u/SNJ.net]
- >>779
IOモナドは世界状態RealWorldを取るStateモナドと同じ意味論を与えることができる。 Stateモナドに副作用がないのと同様にIOモナドはモナドにも副作用はない。これが1。 IO a を RealWorld -> (RealWorld, a) と元の形に直した上で Haskellのグラフ書換系上で入出力がどう見えるか考えてみればいい。これが2。 これでわからんなら私のせいではない。
- 791 名前:仲本だいすけ [2015/07/03(金) 09:46:07.14 ID:6Fdm7Fxt.net]
- 疑似科学おじさんまだいるの?病院行こうよ
- 792 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 09:57:24.37 ID:p7lUbcZE.net]
- 岡部氏の「もっと世界観を」には賛成。
しかし関数プログラミングやFRPは銀の弾ではないとも思う。 なぜこうも銀の弾が出てこないのか?
- 793 名前:デフォルトの名無しさん [2015/07/03(金) 10:02:29.75 ID:Iifsm05F.net]
- そんな事より毛ブログがなんで更新されないのかな?
- 794 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:17:59.41 ID:R0ApVOfB.net]
- >>780
グラフ書換系からモナドがどう見えるかは関係ない 実際にIOモナドから値を取り出し、副作用を伴う処理を使う際 参照透過性を維持できるという説明をよろしく
- 795 名前:デフォルトの名無しさん [2015/07/03(金) 10:19:49.54 ID:vDmQcknf.net]
- まあとりあえずこれを読めよ
d.hatena.ne.jp/kazu-yamamoto/20090627/1246135829
- 796 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:26:38.47 ID:R0ApVOfB.net]
- >>785
そのリンク先の説明は理解できるが 今レスしている人はどの趣旨の説明でもない
- 797 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:26:38.81 ID:R0ApVOfB.net]
- >>785
そのリンク先の説明は理解できるが 今レスしている人はどの趣旨の説明でもない
- 798 名前:デフォルトの名無しさん [2015/07/03(金) 10:28:25.82 ID:wl7u/SNJ.net]
- IOモナドの表現getCharが複数あってもRealWorldの値が違うので
決してノードが共有されないことに気が付かなかったんですかねえ。 グラフ書換でノードが共有されることと参照透過性との関係が 理解できてない可哀想な子だったか。
- 799 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:32:05.52 ID:R0ApVOfB.net]
- あ、すまん確かに3と同じ事いってるね
タプルをRealworld aと勘違いしてた
- 800 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 10:39:21.05 ID:R0ApVOfB.net]
- >>788
よく読んでいなかったよ謝る
- 801 名前:仲本だいすけ [2015/07/03(金) 10:48:00.79 ID:Dt4z3lub.net]
- >>782
ThinkDifferent(笑)
- 802 名前:デフォルトの名無しさん [2015/07/03(金) 10:49:58.03 ID:aSIkPSGQ.net]
- 駱駝さん、アホに構ってんと、仕事しようよ…
- 803 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:24:59.81 ID:p7lUbcZE.net]
- > Haskell には副作用はない。なぜなら、Haskell が作るのは命令書のみで、それが実行されるのは Haskell の外での話だからだ。
そういえば、この解釈は酷い解釈だったな
- 804 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 11:35:30.05 ID:8+5j5k8x.net]
- >>793
・副作用は定義した時ではなく実行時に発生する ・引数 (RealWorld) は関数を定義した時ではなく呼び出した時に渡される ほぼ同じ内容だ 同じ内容に優劣をつけるのは言葉遊びだ (遊ぶなとは言っていない)
- 805 名前:仲本だいすけ [2015/07/03(金) 11:39:29.06 ID:TviClge2.net]
- 楽しいから続ける(笑)
- 806 名前:仲本だいすけ [2015/07/03(金) 12:04:29.45 ID:ri2L7Lgt.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ < 排便ダン 、:::::.. /:::; .,-、 l:::/、 ,―:::::::: ゝヽ- ー' 、 l::/,、ヽ l,、,、,,:、:: / ,--、,-.、_ l /::::::,、,、l l,、,、,、,、,、::、 `ー ̄-' /:::::::::::,、,、l l,、,、,、,、,、,、::ヽ /::::::::、,、,、,、,ノ:\ /⌒\〆', `  ̄ ´ ゝ/⌒\ / ノつ\ ・ ・ /⊂ ヽ! o0○ノ / 3 \ (::::⌒ヽ / とノ\ ヽ○0o ( /、_ノ\ Y `(_、_) / \´ )゚ \_) `ヽ : :;;*:; : : : | (_ノ 人__;;:;;、___ノ ヽヽ ヽヽ ;:;;:;;:;,, ──┐ | | ──┐ | | ∬ ;;:;::.;::.::;::..:;:..: ∬ / | | /. | | ・〜 ;::;.:;:;:;:;:.:;:.:::.;:;:;.:.:.: ノ ノ ┐ ノ ノ ┐ ∬;;;:::;;;:;:.:;:.::.:;;.:.;.:;.:; ∬ ┴ ヽヽ ┴ :"
- 807 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:15:29.28 ID:p7lUbcZE.net]
- >>794
ほぼ同じ内容だろうが、それらはどれも酷い解釈だと思うよ
- 808 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:36:08.66 ID:IUu1So5+.net]
- 何が酷いの? IOが一級値である以上、最も正確な解釈だと思うが。
- 809 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 12:38:18.64 ID:InleWrcM.net]
- むしろそれ以外に、実際の実行結果に合う解釈はあるのか?
- 810 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:16:07.46 ID:msRG1Yik.net]
- >>796
顎の両脇の部分が、後ろで済ませたとぐろ糞に見える
- 811 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 15:58:45.53 ID:Vi+qPEKL.net]
- Prelude> let x = putStrLn "hello" in x >> x
hello hello Prelude> let x = putStrLn "hello" in seq x x hello Prelude>
- 812 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 19:01:10.98 ID:V10CPSDi.net]
- 型=値の集合と思ってると IO でラップされた型は一体どんな値なのかと気にしてしまうんだね。
- 813 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 19:04:32.10 ID:Vi+qPEKL.net]
- >>802 それはIOに限らず抽象データ型一般について言えるかも
- 814 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 21:18:44.48 ID:XD0nd274.net]
- IO aが抽象データ型だとするとb -> IO aがFactoryMethod
IOはコンストラクタが隠蔽されているのだから必然的にそうなる
- 815 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 22:59:59.80 ID:8flj3gJm.net]
- 言いたいことはわかるが空な多相型じゃなくてτ1 -> IO τ2とか書いてくれ(笑)
- 816 名前:デフォルトの名無しさん mailto:sage [2015/07/03(金) 23:22:54.07 ID:XD0nd274.net]
- そもそも一番肝心な(->)のコンストラクタがない
Haskellの半分以上はコンストラクタやパターンマッチでは説明がつかない
- 817 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 02:18:23.55 ID:XsL/EKLB.net]
- 半分以上のHaskell教えてよ
- 818 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 09:50:27.87 ID:WNuVOXDD.net]
- Haskell は数学を連想させるので絶対流行らん。
- 819 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 10:25:08.25 ID:8ixaKuBt.net]
- >>808
その「ので」が「今日は天気が良い『ので』どこかに出かけよう」ぐらいエエカゲンなんだよなあ
- 820 名前:仲本だいすけ [2015/07/04(土) 10:41:07.54 ID:uNR/QH/o.net]
- ,.-―: ̄`ー::::::::::、
/::::::::::::.::::::::::::::::::::::::::::`::、、 /::::::::::::::::::::::::::::::::::::::::::::::::::::::`、 l::::::::::::::::::::::::::::::::::::::::;':l:::::::::::\::l l:::::::::::::::::::::::::::::::::,,::::::::;-,:,::::::::::::::::l l::::::::::::::::,_,.::::,';::::::;:::::: :: l ::::::::::::::l l::::::::::/-/:::/-ニ,.::::/=,./::::::::::l ヽ:::: ´、ひ> ;: l .<ひ>' 、::::::::/ ヽ:::::  ̄ .)::; l  ̄ l::::/ 、:::::.. /:::; .,-、 l:::/、 :::::::: ゝヽ- ー' 、 l::/, ,:、:: / ,--、,-.、_ l / ,.:':'゙'゙'゙:゙'゙':';. 、::、 `ー ̄-' / r゙ ,.: :;;;:: : : : 、::ヽ /: | : ::::~';::--ー'ー-----ーー;;:'゙ .: :` ‐- 、 | ,i ::::::::::::::::::::::::::::::: ::: :ヾ i r' ::::::::::::::::: : : :::::: ::::: ::::. . / | :::::::::: : : : : ::: :: :: イ i : : ::::::::::: : : ::::::: : | | ,.;イ-- ., ,... -' i i ,.;':/ ゙'ー-.,_ i ,.イ:: / .i:::: /:/  ̄i / ゙i | │:: ノ::/ | i | | r':: イ:::::i゙ | | i | |:: | ヽ '-., ヽ 〈 ヽ ヽ., i, , '-, ゙'ー'ー' ヽ、`,ー、 `'ー'ー'
- 821 名前:デフォルトの名無しさん [2015/07/04(土) 11:47:31.61 ID:D//5Uocc.net]
- 筒井康隆が新潮10月号(9/7発売)に最新長編『モナドの領域』330枚一挙掲載
- 822 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 14:12:51.24 ID:WvwJxr10.net]
- Haskell は門限が7時の女子大生を連想させるので絶対流行らん。
- 823 名前:デフォルトの名無しさん mailto:sage [2015/07/04(土) 16:46:21.33 ID:rWY2qCze.net]
- Haskell 擬人化するなら眼鏡で想像するひと多そう。
- 824 名前:デフォルトの名無しさん [2015/07/05(日) 03:00:57.48 ID:18u325sL.net]
- jbbs.shitaraba.net/bbs/read.cgi/study/2246/1279896594/534
↑ ↑ ↑ ↑ ↑
- 825 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 03:18:53.53 ID:5EFP5F9v.net]
- リンク先政治広告なのでみなくてよろし
- 826 名前:デフォルトの名無しさん mailto:sage [2015/07/05(日) 11:32:05.80 ID:j/NgsVfb.net]
- 長期的に考えるんだ
最初は眼鏡で途中から眼鏡を外せば流行ると考えるんだ
- 827 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 00:22:13.25 ID:wlw6otNx.net]
- 使うメリットが無い。
デメリットは多いのに。
- 828 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 04:07:14.46 ID:W9Wle9it.net]
- 毛を引き寄せてしまった程の黒魔術的魅力がHaskellにあるのだろう
- 829 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 04:12:56.58 ID:G+yljX6j.net]
- goよさそうだなと思って覚え始めたけど型定義が貧弱すぎてやる気大幅ダウン
Haskellは禁断の果実だった
- 830 名前:デフォルトの名無しさん [2015/07/06(月) 10:19:51.08 ID:9VlVzieP.net]
- システムプログラミング言語ならhaskellやった人はgolangよりrust結構気に入るだろうと思う
代数的データ型、型クラス、型推論、immutableがデフォルト、パターンマッチ、 メモリリークをコンパイルエラーにする と結構 ml likeな言語
- 831 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 10:24:54.61 ID:9VlVzieP.net]
- >>818
毛を引き寄せたのはhaskellじゃなくてjsだろ
- 832 名前:デフォルトの名無しさん [2015/07/06(月) 18:54:20.21 ID:yIxlkBRi.net]
- 痴呆症ブログ更新きたよ!
749 名無しさん@ゴーゴーゴーゴー! 2015/07/06(月) 14:17:10.21 ID:IaVh3M450 kenokabe-techwriting.blogspot.jp/2015/07/javascript.html おかえり!入院しろ!
- 833 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 21:10:08.11 ID:EN2KuOqG.net]
- >>820 いいことを聞いた、ちょっと触ってみようかな
- 834 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 21:43:24.49 ID:G+yljX6j.net]
- 普及してる言語の中でミスが起きないよう設計されてるやつが欲しくてさ
Rustは人口少ないしScalaよりさらに関数型で安全そうだけどじゃあHaskellでいいじゃんってなる
- 835 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 22:13:00.63 ID:pYzRJ5bG.net]
- elixirとか
- 836 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 22:38:54.30 ID:/jetTYu7.net]
- 末尾呼び出しが使えないとやる気が出ないね
ループでしか書けないからね
- 837 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 23:08:12.61 ID:G+yljX6j.net]
- 静的型
直和型 再帰型 抽象型 独自(ドメイン固有)型 型推論 ダブルディスパッチ 高階関数 map/filter/fold 末尾再帰最適化 オブジェクト指向でもこれくらいサポートしてほしい
- 838 名前:デフォルトの名無しさん [2015/07/06(月) 23:11:36.25 ID:8//4HfJE.net]
- 相変わらず岡部健の記事は狂ってて面白い
- 839 名前:デフォルトの名無しさん mailto:sage [2015/07/06(月) 23:28:12.05 ID:IO/OfGDx.net]
- >>824
rustは日本人ユーザが少ないだけでコミュニティは盛り上がってる
- 840 名前:デフォルトの名無しさん [2015/07/07(火) 00:34:34.08 ID:/AiLg+DV.net]
- 岡部が他人のコードを勝手に、不完全に書き換えて実行して
その結果を叩いてるぞ
- 841 名前:デフォルトの名無しさん [2015/07/07(火) 01:15:52.91 ID:6n40dgbK.net]
- 岡部の記事だけを読むと、説得されかけるのは疲れているからだろうか?
- 842 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 01:30:24.54 ID:0l2OmbIX.net]
- >>824
rustはc,c++と同じ低レベルプログラミング言語だから haskell、scalaとは被らないよ
- 843 名前:デフォルトの名無しさん [2015/07/07(火) 01:44:46.81 ID:5T5xC6ja.net]
- 「ミスが起きない」の意味が違う
- 844 名前:だよな。
HaskellとRustでは型に意図された機能がぜんぜん違う。 [] - [ここ壊れてます]
- 845 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 04:38:19.84 ID:wEQ5fYPF.net]
- >>833
どういう部分が? 所有権という概念が入るだけで、型付けは結構強めだと思うが
- 846 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 05:07:24.51 ID:wEQ5fYPF.net]
- >>831
洗脳…ですかね
- 847 名前:デフォルトの名無しさん [2015/07/07(火) 08:27:24.02 ID:5T5xC6ja.net]
- >>834
Rustは高階カインドやGADT使えないでしょ。モナドすらない。 だけど線形型は使えて(所有権)、要するに基本のHindley-Milner systemからの 強化方向とその背景にある思想が全然違う。 データの構造に対する表現力を求めるのとリソース管理を求めるのと。 なおどっちも突っ込むと人智を超え始めるのはATSを見ればお分かりの通り。
- 848 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:30:37.69 ID:6KFd5cV4.net]
- Rustは低レベルな世界に関数型の表現力と安全性を持ち込もうとしている言語。
最初はOCamlで開発されていたからか、letとかOptionとかML系の匂いはする。 ただし簡潔さよりもゼロオーバーヘッドを優先しているから、冗長な表記が多々含まれる。 あと型推論は関数定義内だけに適用されるから、エラーメッセージが見当外れの場所を指さない一方、 borrow checkerのエラーはすごく把握しづらい。impl書いている時は特に。 自分がいかにGCに依存し、リソース管理を怠っていたかをこれでもかという程思い知らせてくる言語。
- 849 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 08:31:10.23 ID:bP16dll8.net]
- Rustなんて放り投げてATSやろうぜ!
- 850 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 11:38:06.78 ID:ZG49EUnh.net]
- これが超えちゃいけないラインってやつか
トランポリンとかモナドとかよりもっと抽象度高い系の片鱗を味わったぜ
- 851 名前:デフォルトの名無しさん [2015/07/07(火) 12:46:53.46 ID:KLvjH7rL.net]
- 岡部健・・・・・・。
- 852 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 15:14:42.99 ID:kS7BAnfS.net]
- >>838
岡部究(master_q)さん、暇なんですか?
- 853 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 15:31:19.79 ID:AZjd+yQY.net]
- ParsecとTrifectaってどう違うの?
- 854 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 15:36:54.07 ID:kS7BAnfS.net]
- >>842
Parsec の改良実装が Trifecta だそうです(TwitterのTL調べ)
- 855 名前:デフォルトの名無しさん [2015/07/07(火) 16:41:16.20 ID:kvoehb1f.net]
- まさかUCLA卒の情報技術者を自称する岡部が、
メモリを食いつぶしてることの裏を取ってないわけねーだろ。 これには何か事情があるんだろう。
- 856 名前:デフォルトの名無しさん [2015/07/07(火) 16:44:08.49 ID:kvoehb1f.net]
- まとめ:
岡部「破壊的代入を使わないクリックカウンターやお絵かきロジック(マウスのドラッグ)はFRP(自称)でなければ書けない」 →OCamlでもHaskellでも瞬殺 →岡部「再帰でメモリリーク(※スタックオーバーフローの意)する」 →末尾再帰なのでスタックオーバーフローしないし、実際のメモリ消費量も増えていない。 岡部の示した「証拠画面」はメモリ不足ではなくプロセスを強制終了しただけ。
- 857 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 16:57:06.07 ID:AzQt5h10.net]
- マジで末尾再帰の最適化を知らなかったのか、kenokabe独自定義で違う意味なのか、どっちなんだ?
前者だとちょっとガッカリ…
- 858 名前:デフォルトの名無しさん [2015/07/07(火) 17:57:25.43 ID:T57Vd7z3.net]
- メモリリークはバズワードであってだね・・・・
- 859 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 18:14:46.72 ID:50EUtPEU.net]
- kenokabeさんはもう許されていいとおもう
- 860 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 18:17:56.32 ID:Ra6qpxUV.net]
- Haskellは強制されても習得できない難しい言語だからこそ非人道的事案は少ない
それに比べて関数型という安易な言葉に苦しめられる人は多い
- 861 名前:デフォルトの名無しさん mailto:sage [2015/07/07(火) 20:57:42.46 ID:strljqHr.net]
- どこかのスレでツリートラバースするのに再帰を使うのは良くないマナーと書いたら、
末尾再帰と言われたのだが。
- 862 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 00:23:41.84 ID:D8OEoYJf.net]
- >> 850
なぜ良くないの?
- 863 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 00:43:21.45 ID:lu3S4Qgm.net]
- >>>845
OCaml版はloop_at_exit使ってるのがダメと指摘されますた>< Graphics.wait_next_eventかGraphics_js.loop使ってください
- 864 名前:デフォルトの名無しさん [2015/07/08(水) 01:57:29.30 ID:T1Ir4r2m.net]
- >>845
末尾再帰はあのコード例では関係なくて、イベントハンドラを経由したtrampolineになってるのでスタックオーバーフローしない、が正しそう。
- 865 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 03:26:31.55 ID:gcJIUX06.net]
- >>851
末尾再帰の最適化がかからない言語は使うべきではないともレスがあったな。
- 866 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 05:37:16.57 ID:D8OEoYJf.net]
- >> 854
よく分かりませんが、ところで、あなたにレスを見て気になって、調べて初めて知りました。 Haskellって末尾再帰の最適化って無いんだね。 ずっと勘違いしてた。気付かせてくれてありがとう。
- 867 名前:デフォルトの名無しさん [2015/07/08(水) 06:38:51.11 ID:k4MH4D3R.net]
- >>855
>Haskellって末尾再帰の最適化って無いんだね TCOが無いんじゃなくて、あくまでサンクの問題。
- 868 名前:デフォルトの名無しさん [2015/07/08(水) 07:15:31.29 ID:asOwE27P.net]
- parsecとtrifectaは比較するようなものじゃないよ
- 869 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 08:22:34.09 ID:SmYj13jC.net]
- >>857
kwsk
- 870 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 08:29:06.72 ID:gcJIUX06.net]
- >>855
そもそも最適化が無い言語とはC言語のことで、Cは使うなHaskellを使えと言う話だったのだが。
- 871 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 08:53:04.13 ID:Hcg+sLDh.net]
- Haskellでサンクをインライン展開する最適化ってできるんじゃねえの
サンクが末尾にあったらTCOと同じだろ
- 872 名前:デフォルトの名無しさん [2015/07/08(水) 09:03:37.61 ID:k4MH4D3R.net]
- >>860
できる。ghcなら-O2つければいい。
- 873 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 09:44:23.49 ID:gcJIUX06.net]
- そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループは
オフセットを指定してジャンプ程度の違いしかないので、インストラクションに 関しては大して違いが無いのだが。 どうもハスケラーは関係ないことを指摘して、「だから◯◯はダメだ」と言い出す 傾向が強い。
- 874 名前:デフォルトの名無しさん [2015/07/08(水) 10:56:59.54 ID:k4MH4D3R.net]
- そりゃTCO効いた後なら違いは殆どなくなるにきまってる。
- 875 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 11:02:57.48 ID:Mh0VppoT.net]
- 「そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループは
オフセットを指定してジャンプ程度の違いしかないので」 はあ???
- 876 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 11:10:43.42 ID:+0ZOrsx3.net]
- >>863
「TCO効いた後なら」同じだが、>>862 は「Cの関数呼び出し」と言ってるから Cも関数呼び出しもまったくわかってない。プログラムわからないんだったら出てくんな。
- 877 名前:デフォルトの名無しさん [2015/07/08(水) 11:28:35.90 ID:k4MH4D3R.net]
- >>865
まさかスタック積むことすらわかってないとかなんかね?
- 878 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 15:11:37.94 ID:TEEbED7E.net]
- 久しぶりにきたら荒れてるな
Haskellは破壊的代入をしようとすると面倒なのがつらい。 巨大な1次元配列の任意の場所を参照しながら大量に書き換える処理とか 純粋性を保ったままやろうとすると凄いことになる。 *例えば画像データの一部に別の画像をmixするとか
- 879 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 16:24:24.26 ID:Eo9ZYfU/.net]
- >>866
スタックに引数、戻り値と積んでからジャンプするんだから、アドレスを渡す 関数ならスタックは積む必要が無い。 再帰してるんだから。 ハスケラはどうも自分は天才で自分以外は全員馬鹿と思い込む傾向がある。
- 880 名前:デフォルトの名無しさん [2015/07/08(水) 16:25:04.00 ID:Fj3AV/LF.net]
- 相変わらず殺伐としている。
いつものマウンティング合戦。
- 881 名前:デフォルトの名無しさん [2015/07/08(水) 16:26:57.55 ID:Fj3AV/LF.net]
- 多分、ハスケラではなくオカマラーだよ。
なぜかオカマちゃんが出没するのだ。
- 882 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 16:51:49.63 ID:TEEbED7E.net]
- ハスケラと一緒に仕事したい(自社製品を一緒につくりたい)けど
怖い人多そうで誘いづらい
- 883 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:09:26.71 ID:F0vddBGo.net]
- 「Cも関数呼び出しもまったくわかってない。プログラムわからないんだったら出てくんな。」
「まさかスタック積むことすらわかってないとかなんかね? 」 毎日こんなこと言われると思う。
- 884 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:22:12.92 ID:TEEbED7E.net]
- なにそれ怖い
製品完成する前に心折られそう
- 885 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:24:08.22 ID:g9xxt+x4.net]
- 「そもそも、Cの関数呼び出しはアドレスを指定してジャンプ、ループはオフセットを指定してジャンプ程度の違いしかないので」 とか
「スタックに引数、戻り値と積んでからジャンプするんだから、アドレスを渡す関数ならスタックは積む必要が無い。再帰してるんだから。」とか (しかもTCOの話をしてるのに)、本当にCも関数呼び出しもわかってない知ったかぶりがHaskellerを中傷してるだけ。 それ以上でもそれ以下でもない。
- 886 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:29:09.36 ID:TEEbED7E.net]
- 穏やかなハスケラいないかな
簡単なプログラムができる程度の初心者でもいいんだけど 一緒に自社製品つくりたい (ただし売上あるまで一緒に無給)
- 887 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:33:01.82 ID:3bDYKzqv.net]
- >>874
どうもハスケラーは関係ないことを指摘して、「だから◯◯はダメだ」と言い出す 傾向が強い。
- 888 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:34:43.10 ID:3bDYKzqv.net]
- 最後には「Javaの話ししてるのにJavascriptと勘違いしている」などと言い出しそうだな。
- 889 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:37:24.50 ID:ikFma15C.net]
- わかってないから馬鹿にされてるんじゃなくて、
わかってないのに自覚せず威張ってるから馬鹿にされてるんだが…。 そういう奴がいて、間違いを指摘すると逆ギレされる職場とか絶対嫌。
- 890 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:39:55.04 ID:coR9sNH7.net]
- 末尾呼び出し最適化は再帰だけじゃないよ
- 891 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:46:11.37 ID:TEEbED7E.net]
- 馬鹿にするのも逆ギレもよくないとおもう
そしてこのスレが荒れるのも彼の呪いじゃないかとおもう もうそっとしておくのが一番いいとおもう
- 892 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:48:42.74 ID:3bDYKzqv.net]
- 「Cは再帰の最適化が無いから使うべきではない、Haskell使え」と言う話に、
Cは再帰の最適化が必要ないのに何言ってんの?と答えた。
- 893 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:54:30.07 ID:3bDYKzqv.net]
- Haskellの最適化って他の言語では必要ないものでしょ。
「遅延呼び出しによって必要のない計算を無くせるスゴイ!」 他の言語では最初から必要ない計算はしないからそんな最適化は必要ない。 自らゴミを持ち込んで 「ゴミを減らせたスゴイ!Cはゴミを減らせないから使うべきでない!」 とか言い出すのがハスケラー。
- 894 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 17:54:46.50 ID:jdKxxZpi.net]
- いろいろと誤解している気がする
- 895 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:02:40.05 ID:7bDc6WAX.net]
- まず、末尾再帰をループに変換する最適化は、CでもHaskellでも可能で、実際にGCCでもやってる。
それはさておき、Cではループを末尾再帰で書いたりしないから、そんな最適化はいらない、という意見もそれはそれでわかる。 末尾再帰使わないのに、末尾再帰最適化がないからダメ、なんて言ってる奴がいたらそいつがおかしいので具体的ソース希望。
- 896 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:11:09.96 ID:LC6Y88mm.net]
- 必死に藁人形作ってるだけだから構ったら駄目だよ
末尾再帰最適化を知ってて制御構文を知らないなんて そんな支離滅裂な馬鹿を前提としてる時点で察しろと
- 897 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:13:26.90 ID:7bDc6WAX.net]
- で、CでもHaskellでも、末尾呼び出し最適化されていない普通の関数呼び出しは、
戻り番地や、まだ使う変数をセーブしておくためにスタックを消費する。 (引数渡しにスタックを使うこともあるけど、そうでなくても) (再帰でも、再帰でなくても)末尾呼び出しの場合、そのセーブが不要なので、 ただのジャンプ(と引数のセット)だけに最適化できる。 この最適化は関数型言語の処理系では普通は実装されている。 Cでも全くできないことはないと思うが、いろいろ面倒そうなので やってるコンパイラは寡聞にして知らない。
- 898 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:14:38.28 ID:3bDYKzqv.net]
- >>884
変換する最適化という言い方が、ハスケラーっぽいなあ。 Cは積む必要のないものは積まないんだから。 スタックに何も積まなければループも関数呼び出しも大した違いは無い。 そういうわけでこれからは、最適化しないと使い物にならないHaskellと考えていただこう。
- 899 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:14:42.05 ID:7bDc6WAX.net]
- >>885 スマソ。何となくちゃんと説明しないと俺の気が済まなかった。
- 900 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:17:33.59 ID:7bDc6WAX.net]
- (末尾呼び出し最適化されていない)関数呼び出しでスタックに積むものはCでもHaskellでも同じ。
戻り番地と、生きている変数と、レジスタに入りきらない引数。
- 901 名前:デフォルトの名無しさん [2015/07/08(水) 18:27:23.28 ID:Fj3AV/LF.net]
- マウンティングする奴は、マウンティングすることが目的だから、生産性は
低い。学者さんに多いタイプ。アカハラ怖い。
- 902 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:27:27.64 ID:LC6Y88mm.net]
- >>887
???? Cもfastcallじゃない限り戻りアドレス積むよ
- 903 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:28:15.90 ID:LC6Y88mm.net]
- しまった同じやつだった…
- 904 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:39:15.89 ID:2M74HMLS.net]
- 馬鹿とは議論するな。傍目にはどちらが馬鹿か判りにくい
- 905 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 18:50:26.80 ID:7bDc6WAX.net]
- 本当に混乱してる人もいるかもしれないし、説明のまとめだけ…
884 :デフォルトの名無しさん:2015/07/08(水) 18:02:40.05 ID:7bDc6WAX まず、末尾再帰をループに変換する最適化は、CでもHaskellでも可能で、実際にGCCでもやってる。 それはさておき、Cではループを末尾再帰で書いたりしないから、そんな最適化はいらない、という意見もそれはそれでわかる。 末尾再帰使わないのに、末尾再帰最適化がないからダメ、なんて言ってる奴がいたらそいつがおかしいので具体的ソース希望。 886 :デフォルトの名無しさん:2015/07/08(水) 18:13:26.90 ID:7bDc6WAX で、CでもHaskellでも、末尾呼び出し最適化されていない普通の関数呼び出しは、 戻り番地や、まだ使う変数をセーブしておくためにスタックを消費する。 (引数渡しにスタックを使うこともあるけど、そうでなくても) (再帰でも、再帰でなくても)末尾呼び出しの場合、そのセーブが不要なので、 ただのジャンプ(と引数のセット)だけに最適化できる。 この最適化は関数型言語の処理系では普通は実装されている。 Cでも全くできないことはないと思うが、いろいろ面倒そうなので やってるコンパイラは寡聞にして知らない。 889 :デフォルトの名無しさん:2015/07/08(水) 18:17:33.59 ID:7bDc6WAX (末尾呼び出し最適化されていない)関数呼び出しでスタックに積むものはCでもHaskellでも同じ。 戻り番地と、生きている変数と、レジスタに入りきらない引数。 👀 Rock54: Caution(BBR-MD5:405b7f1af0f5a85b432d79fa769e9aeb)
- 906 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 19:00:46.58 ID:Hcg+sLDh.net]
- ループを無くす理由の一つはnullを無くしたかったから
nullは不要 → 初期化と代入の区別が必要 → 面倒だから代入も不要 → ループも不要
- 907 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 19:03:01.21 ID:7bDc6WAX.net]
- じゃあ、そもそもなんでループをわざわざ末尾再帰で書くの?という疑問は当然だけど、
ループで書くと破壊的代入が必要になるから、関数的に書くと自然に末尾再帰になる。 なので関数型プログラミングをするなら末尾再帰最適化は必須だし、 実際に(再帰以外の末尾呼び出しの最適化も)まともな処理系はみんな実装してる。 関数型言語では必須かつ簡単な最適化なので。
- 908 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 19:04:06.48 ID:7bDc6WAX.net]
- >>895 すまん前後した
- 909 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 20:23:51.51 ID:oVqSZ92L.net]
- >>886
vcは引数が全く同じ関数の末尾呼び出しをgotoにするよ。
- 910 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 20:46:18.84 ID:7bDc6WAX.net]
- >>898 「引数が全く同じ」ってことは、末尾再帰だよね?
末尾再帰は>>884にあるとおりGCCも(引数が違っても)最適化してる。 >>886は再帰以外の末尾呼び出しの話だった。 一続きだったんだが、独立して読むと明示されてないね。 >>894でまとめて読んでくれ。すまん。
- 911 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 22:36:48.90 ID:oVqSZ92L.net]
- >>899
いいや、tail callだよ。
- 912 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 22:53:06.86 ID:TEEbED7E.net]
- VSにHaskell用プラグインを組み込むプロジェクト進んでるのかな?
マジで早く使いたいんだけど
- 913 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 23:02:56.60 ID:zrPw7vNx.net]
- ここまでを簡単に解説すると、ハスケラはシッタカブラー。
- 914 名前:デフォルトの名無しさん mailto:sage [2015/07/08(水) 23:32:53.31 ID:oVqSZ92L.net]
- >>899
ほらよ。 int foo(char *, int); int bar(char *a, int b) { return foo(a + 10, b - 10); } _bar PROC ; COMDAT mov eax, DWORD PTR _b$[esp-4] add eax, -10 ; fffffff6H mov DWORD PTR _b$[esp-4], eax add DWORD PTR _a$[esp-4], 10 ; 0000000aH jmp _foo
- 915 名前:899 mailto:sage [2015/07/09(木) 05:48:11.05 ID:KPxfvpRW.net]
- >>903 おお! 「引数が全く同じ」って、値じゃなくて、数や型が同じってことね。サンクス。
逆に、なんで引数の数や型が同じじゃないといけないの? スタックポインタの調整が面倒だから?
- 916 名前:899 mailto:sage [2015/07/09(木) 05:57:34.42 ID:KPxfvpRW.net]
- いつのまにかGCCも末尾再帰じゃない末尾呼び出し最適化もやってた。引数の数や型が違っても。
Cでも需要があるのかな。 extern int foo(int); int bar(char *a) { return foo(10); } bar: .LFB0: .cfi_startproc movl $10, %edi jmp foo .cfi_endproc
- 917 名前:899 mailto:sage [2015/07/09(木) 06:13:19.89 ID:KPxfvpRW.net]
- www.drdobbs.com/tackling-c-tail-calls/184401756
にGCCがTCOする条件が解説されてた。Cだとややこしいけど需要はあるらしい。 連投&スレ違い失礼しますた。
- 918 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 06:35:27.16 ID:OEKsJpEx.net]
- >>904
>「引数が全く同じ」って、値じゃなくて、数や型が同じってことね。サンクス。 再帰で値が同じならそれは無限再帰と呼ばれる。 >逆に、なんで引数の数や型が同じじゃないといけないの? スタックポインタの調整が面倒だから? 引数の個数はcalleeではわからないから、面倒ではなく、出来ない。
- 919 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 08:19:53.49 ID:e+1UNYHr.net]
- >>907
>再帰で値が同じならそれは無限再帰と呼ばれる。 Cだと副作用でメモリの中身が変わってるかもしれない >引数の個数はcalleeではわからないから、面倒ではなく、出来ない。 Cだと同じ関数の型の見え方がcallerとcalleeで違ったりするからね。 >>906みたく条件緩和できるがなかなかややこしい
- 920 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 09:12:59.14 ID:LXpNU/xq.net]
- >>901
VSの色んな機能を使えるなら欲しいけど、vimやemacsのプラグインと同じ事しか出来ないならいらん
- 921 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 10:48:24.29 ID:h1Dw9jX8.net]
- デバッガ観点で言うと末尾呼び出しの最適化されると
バックトレースが不正確になるのでやっかい 大規模な開発ではあえて無効にされることもあるよ
- 922 名前:デフォルトの名無しさん mailto:sage [2015/07/09(木) 10:56:32.05 ID:sAbBvj66.net]
- >>909
使えないの・・・?(´・ω・`) 詳細しらないけどきっと使えるんじゃね? VSのデバッガ使いたい
- 923 名前:デフォルトの名無しさん [2015/07/10(金) 07:10:09.65 ID:0h1M+LeE.net]
- CSS使えない奴よりマシ
- 924 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 10:31:36.54 ID:j3g7NrlE.net]
- (A -> R) -> R は継続モナドになるわけだが、
R -> A や A -> R もモナドにできるの?
- 925 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 11:04:46.48 ID:XOUMSF+T.net]
- CSSいらない
>>913 m (r -> a) m (a -> r) モナドにしたったで
- 926 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 12:28:35.80 ID:j3g7NrlE.net]
- >>914
returnと>>=はそれぞれどうなるの?
- 927 名前:デフォルトの名無しさん [2015/07/10(金) 13:29:21.43 ID:NSmmAGhS.net]
- >>915
つうか (-> R A)と(-> A R)で普通に関数モナドな。 return = const (>>=) f g = ¥x -> g ( f x ) x
- 928 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 13:50:04.51 ID:j3g7NrlE.net]
- (-> R A)はそれで分かったが、
(-> A R)のreturnと>>=は?
- 929 名前:デフォルトの名無しさん [2015/07/10(金) 16:23:11.40 ID:NSmmAGhS.net]
- >>917
>(-> R A)はそれで分かったが、 >(-> A R)のreturnと>>=は? あたま大丈夫?
- 930 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 18:30:43.38 ID:j3g7NrlE.net]
- は?
- 931 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 19:04:13.42 ID:l6c5ofse.net]
- たしかにあたま大丈夫じゃないリスクはゼロではないが、自動車より安全だ
そして、自動車より安全と発言した人間が狂っていると断言できる者はあまり多くない
- 932 名前:デフォルトの名無しさん mailto:sage [2015/07/10(金) 23:42:39.10 ID:ucCSbhAH.net]
- >> 919
Rが具体的な型で、Aがなんでもいい型、って言いたいわけだね。 (A -> R) はモナドにならないよ。というか、Functor(共変関手)にならない。 代わりにContravariant(反変関手)になる。 newtype Op a b = Op { getOp :: b -> a } instance Contravariant (Op a) where contramap f g = Op (getOp g . f) (以上contravariantパッケージより) 共変関手にならない理由は、このサイトがわかりやすい。 kinokkory.hatenablog.com/entry/20131203/p1
- 933 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 09:25:20.24 ID:6sFnysGr.net]
- >>921
ありがと。 M(A)がモナドになる条件を簡単に言えるのかな?
- 934 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 09:30:00.73 ID:S9PAD2xf.net]
- Emacs使いはflycheckが便利そう
https://github.com/flycheck/flycheck 既出ならスマソ
- 935 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 09:42:11.42 ID:Yc/lws0v.net]
- Cloud Haskellというものを知ったのですが
こういったノード間通信ライブラリを使ってる方がいたら バリエーションや感触を教えてもらえないでしょうか もしくはベタに書いたほうがいいでしょうか
- 936 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 11:24:25.49 ID:aYDDmLdu.net]
- 単体のライブラリの質は人気に比例する気がする
でもフレームワークや統合環境は質より量でごまかせるから人気はどうでもいい
- 937 名前:922 mailto:sage [2015/07/11(土) 13:00:32.09 ID:6sFnysGr.net]
- >>921
教えてもらったサイトの「正の位置・負の位置」で解決しました
- 938 名前:デフォルトの名無しさん [2015/07/11(土) 15:05:57.90 ID:8xsgKabx.net]
- 岡部健の新作が来たゾ〜
- 939 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 15:12:01.82 ID:V/wpM/3h.net]
- あの人はなんでブログの記事まで作って個人に対して反論してるんだろうね
反論記事って言い合いを面白がってみてる人以外には何の得もない気がするんだけどなあ
- 940 名前:デフォルトの名無しさん [2015/07/11(土) 16:20:10.41 ID:obYDcaZK.net]
- Haskellは仕事で使える?
使えるとどうなる?教えて
- 941 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 16:44:05.06 ID:aYDDmLdu.net]
- もし仕事で使えると、無料で色々教えるのが勿体無くなる
- 942 名前:デフォルトの名無しさん [2015/07/11(土) 16:46:52.16 ID:obYDcaZK.net]
- どういう時に使う?教えて詳しく
- 943 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 20:42:56.70 ID:/RrsVJlS.net]
- そりゃ自分のタスクを自動化するのに使うんだろと
- 944 名前:デフォルトの名無しさん mailto:sage [2015/07/11(土) 22:25:31.98 ID:6sFnysGr.net]
- >>921
やっぱり自分はアホだった。全然分かっていなかった。 ファンクターにはなるがモナドにはならないものがあるはずだが、 その例が作れん
- 945 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 00:46:11.12 ID:KOjB2nQF.net]
- x^n+y^m=z^r 解は存在するか.だれも解けないといわれたビール予想
解けた方だけどうぞ ttp://blog.livedoor.jp/superprojectx/archives/1030198512.html
- 946 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 0
]
- [ここ壊れてます]
- 947 名前:z0K.net mailto: HaskellのガベコレシステムってJavaのそれよりかなりショボいらしいじゃん []
- [ここ壊れてます]
- 948 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 06:13:49.33 ID:/rMkRh/q.net]
- Haskell処理系のGCよく知らないけど、moving GCでも良いし
破壊的代入がなければwrite barrierもいらないから Haskellのほうが簡単というだけじゃなくて?>ガベコレ Javaは旧SunやIBMががんばった結果、細かい最適化はされてるだろうけど。
- 949 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 08:26:42.75 ID:zJqA9jr9.net]
- 科学的根拠もなくただショボいという意見は参考にならない
もうJavaは無視してC++のようにGCショボいけど速いやつを参考にしよう
- 950 名前:デフォルトの名無しさん [2015/07/12(日) 11:00:37.13 ID:AGKmbBWc.net]
- C++はGCショボいというよりない。。
ということでrustやろうぜ!
- 951 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 11:10:50.31 ID:s7w6GHZY.net]
- RustもGCないじゃん
- 952 名前:デフォルトの名無しさん [2015/07/12(日) 11:44:20.38 ID:fsP2XOSV.net]
- >>939
RCあるぞ。
- 953 名前:デフォルトの名無しさん [2015/07/12(日) 12:48:25.98 ID:KGquBeD3.net]
- Haskellでどんな作業を効率化できますか?
一例を教えて下さい
- 954 名前:デフォルトの名無しさん [2015/07/12(日) 12:52:34.01 ID:fsP2XOSV.net]
- 型のついた構文木の操作
- 955 名前:デフォルトの名無しさん [2015/07/12(日) 13:07:29.47 ID:KGquBeD3.net]
- お前らがこんなことやってるより
ストリーミングサイト作ったCavetube管理人のほうがすごいんだよなぁ
- 956 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 13:26:20.29 ID:kel+atw2.net]
- 誰々より誰々が凄いとかどーでもいいじゃん。
そんなの気にするより、そいつらのソース参考にするとかして Haskell を楽しんだ方が何倍も有意義だよ。
- 957 名前:デフォルトの名無しさん [2015/07/12(日) 13:33:21.56 ID:rAeLMId1.net]
- >>938
GCサポートは付いてるけどな。 RAIIで設計するとGCは遅くなるだけであまり意味ないから誰も使わないな。
- 958 名前:デフォルトの名無しさん [2015/07/12(日) 15:30:30.95 ID:ryFHmMNk.net]
- Cavetubeってなんですか
- 959 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 20:10:37.89 ID:abu6RaU0.net]
- 宣伝だろ
- 960 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 20:16:28.54 ID:bkprvq+c.net]
- Darcsはなぜgitに敗れたのか
- 961 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 21:16:22.96 ID:uwDfGRH4.net]
- HaskellはC言語で作ったライブラリをラップしてばかりだから、そもそもC言語製品に勝てるはずがなかった
- 962 名前:デフォルトの名無しさん [2015/07/12(日) 21:17:29.74 ID:fsP2XOSV.net]
- それは普通に正しい使い方なんだが。
最初からCと競合するような言語じゃない。
- 963 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 22:05:39.58 ID:zJqA9jr9.net]
- Cと競合しないならバイトコードインタプリタで十分
コンパイラのゴリ押しが良くない
- 964 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 22:06:55.79 ID:x1Gu8TTq.net]
- 既存の大量にあるCライブラリを利用しやすいかは大事なポイント
- 965 名前:デフォルトの名無しさん [2015/07/12(日) 22:18:58.68 ID:fsP2XOSV.net]
- >>951
>Cと競合しないならバイトコードインタプリタで十分 >コンパイラのゴリ押しが良くない 意味がわからん。 LLVMコードを出力するのとコンパイラとの境界ってなによ
- 966 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 22:24:58.59 ID:s7w6GHZY.net]
- >>940
RCをGCというならC++にもGCあるだろ
- 967 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 22:42:25.31 ID:bkprvq+c.net]
- JavaとかCは、明らかに駄目な応用先でも上の意向等で使わざる得ないことあるけどHaskell とかlispはそういうこと滅多にないでしょ
- 968 名前:デフォルトの名無しさん [2015/07/12(日) 22:43:02.61 ID:fsP2XOSV.net]
- >>954
その理解で何の問題もないと思うが。 RCがGCの主要実装方法のひとつだという点まで争いたいの?
- 969 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 22:47:38.71 ID:7yEOwALs.net]
- 明確な目的や条件を設定せずに
やたら言語の優劣をつけたがる奴は まともな開発経験も知識も能力もない アホだと断定していいだろ。
- 970 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 23:08:59.10 ID:bkprvq+c.net]
- JavaやCとHaskell の単純な比較はできない
- 971 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 23:48:11.69 ID:s7w6GHZY.net]
- >>956
>>938 がC++はGCないからRustやろうぜとか言ってたんですよ
- 972 名前:デフォルトの名無しさん mailto:sage [2015/07/12(日) 23:48:45.86 ID:zJqA9jr9.net]
- >>953
バイトコードを外部に出力する機能があったら仕様変更の影響が外部に伝播するから その機能が無くても十分なら無い方が良いってこと
- 973 名前:デフォルトの名無しさん [2015/07/12(日) 23:53:56.51 ID:fsP2XOSV.net]
- >>959
なるほど。 Rustのリージョナルポインタによるメモリ管理を GCと間違えたんだろうな。
- 974 名前:デフォルトの名無しさん [2015/07/13(月) 00:22:31.58 ID:FwNm1COs.net]
- Java ビジネス
C 組み込み こういう風になっています。 富豪プログラミングが出来る所でCを使う必要性はあまり無い。
- 975 名前:デフォルトの名無しさん [2015/07/13(月) 00:58:02.40 ID:QeuWC4Dg.net]
- >>961
いやrustにGCがないのは知ってる
- 976 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 02:59:06.50 ID:6i7dJOia.net]
- Rustなんて放り投げてATSやろうぜ!
- 977 名前:デフォルトの名無しさん [2015/07/13(月) 07:50:41.60 ID:Ml9NNXKo.net]
- >>963
だからRCあるだろうが!
- 978 名前:デフォルトの名無しさん [2015/07/13(月) 08:16:40.56 ID:5ZThykAi.net]
- 毛はキータで相変わらず行間が読めないから、
RSSじゃなくて毛自身がコメ書いてる事を自分でバラす事になるんだな(笑)
- 979 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 10:09:26.25 ID:gqfr1aBw.net]
- Haskell流行って長いけどなんか実用になるような成果でた?
- 980 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 10:57:00.94 ID:cCxFevQ1.net]
- 型のついてない成果を型のついた成果に翻訳できる
右から左に流すだけの虚業のように見えるのは仕方ない
- 981 名前:デフォルトの名無しさん [2015/07/13(月) 11:18:47.64 ID:Ml9NNXKo.net]
- 普段から業務に使ってる人間からすると意味不明な問いだ。
- 982 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 11:35:14.43 ID:UsYUluT9.net]
- 「プログラム」の何たるかを
丸っきり分かってない一部のバカにとっては、 「一般ユーザが利用可能なパッケージソフト」だけが 「実用的な成果物」なんだろ。
- 983 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 12:24:32.84 ID:O7974LG1.net]
- Haskell がパッケージソフトの作成に向いていないのは何故?
- 984 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 13:38:57.82 ID:tAtIl5MT.net]
- Javaなんて何のメリットもないのに使わざる得ない時があるのが謎
- 985 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 13:40:49.84 ID:cCxFevQ1.net]
- exeの作成は問題ないがdllの作成に向いているのはCしかない
C++でさえdllの作成に向いていない
- 986 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 15:07:15.86 ID:6ctAAsGS.net]
- エンタープライズ系のアプリケーションでは最適解のひとつだから
仕方がない。 >>962 のとおり。
- 987 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 18:30:29.23 ID:htwOfG4r.net]
- C は実用というよりは、もう教養の部類だからね‥
C がわからないようでは、そいつの言うことは信用できない builder.japan.zdnet.com/script/sp_c-programming-language/20370255/
- 988 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 19:05:07.18 ID:xmoiVj3U.net]
- >>538
特定言語を知らん事を根拠にした レッテリングにはあんまり賛同できないな。
- 989 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 19:27:16.94 ID:9wI4712X.net]
- windows7でhaskellplatform使ってるんですが、
Data.HashTableが入ってないようなので cabal install hashtablesして、成功したのですが 未だにimport Data.HashTableで失敗します。 何がいけないのでしょうか?
- 990 名前:デフォルトの名無しさん [2015/07/13(月) 19:50:15.17 ID:Ml9NNXKo.net]
- >>977
>Data.HashTable Data.HashTableならbaseパッケージに入ってるんで、 hashtables要らないよ。 hashtables使うならData.HashTable.ST.Basicとか Data.HashTable.ST.Cuckooをimportしないと。 多分どこかでなんか勘違いしてると思う。
- 991 名前:デフォルトの名無しさん [2015/07/13(月) 19:56:02.53 ID:Ml9NNXKo.net]
- って、base-4.8からData.Hashtableなくなったのか〜
hashtables入れて import Data.HashTabl.IO でいいんじゃないかな。
- 992 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 20:11:29.72 ID:Ml9NNXKo.net]
- いちおうミニマルなサンプル
{-# LANGUAGE ScopedTypeVariables #-} module Main where import Data.HashTable.IO as H type HashTable k v = H.CuckooHashTable k v main = do (h::HashTable Int String) <- fromList [(1,"tata"),(2,"titi"),(3,"toto")] insert h 4 "tete" l <- toList h print l
- 993 名前:デフォルトの名無しさん mailto:sage [2015/07/13(月) 21:15:03.79 ID:6helnrAX.net]
- ありがとうございます!
動作確認まだ出来てませんが、何とか先に進めそうです!
- 994 名前:デフォルトの名無しさん [2015/07/14(火) 14:33:35.00 ID:d1S9qbgP.net]
- reduce関数やrange関数やmap関数は、命令型のループでしか書けないことをわかってな奴が居るな。
ノイマン型コンピュータというハードウェアは究極的には命令型でしか動作しない。 関数型の機械語なんて存在しない。 ここ、重要ね。反論はないと思うけど
- 995 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 14:35:07.84 ID:Bu3+R9wf.net]
- >>982
だからなに?
- 996 名前:デフォルトの名無しさん [2015/07/14(火) 15:11:21.95 ID:GNUjvMWE.net]
- 言ってみたかっただけ
- 997 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 15:22:11.58 ID:RRB/2bWF.net]
- >>982
関数型プログラマならBackusのCan programming be liberated from the von Neumann style?くらい読んでるわよ! バカにしないでくれる!?
- 998 名前:デフォルトの名無しさん [2015/07/14(火) 15:26:34.91 ID:lfdsryMV.net]
- 極限まで高めた並列性が最高性能を引き出す・・・Haskellで書かれたプログラミンは・・神!
一万を超えるメニーコアが・・・Haskellは・・・神! などと宣伝しすぎたから言われるんじゃないの。 結局速くなってないし。
- 999 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 15:57:28.35 ID:krmtTpmZ.net]
- 宣伝には金がかかる
その金を汚いと思うかどうかは自由だが少なくとも金をかけてないやつは潔白だろ 関係ないやつを巻き込むなよ
- 1000 名前:デフォルトの名無しさん [2015/07/14(火) 16:16:14.81 ID:lfdsryMV.net]
- 速くなってない・・・騙された・・・Haskell死ね!
と思う人がいても不思議じゃないだろ。 宣伝しすぎたんだよ。
- 1001 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 16:18:10.13 ID:Bu3+R9wf.net]
- そんなに宣伝されてたの?
- 1002 名前:デフォルトの名無しさん [2015/07/14(火) 16:44:47.28 ID:lfdsryMV.net]
- そうだねえ。
チラシお断りと貼ってあるのに、ドンドン入れていく感じだね。 Haskellの宣伝がひどいので、コメント欄を無くしたブログも多かったんだよ。 そこまで宣伝したのに、宣伝されたことが全然実現されていないからね。 宣伝では5億並列で一ナノ秒以下を実現とか平気で言ってたからね。 もともと無理だったんだよ。
- 1003 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 17:50:31.44 ID:Bu3+R9wf.net]
- >>990
どこの世界のお話ですか? 君の中の平行世界?
- 1004 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 18:47:54.12 ID:JhU5Z9W0.net]
- >>982
>reduce関数やrange関数やmap関数は、命令型のループでしか書けないことをわかってな奴が居るな。 >ノイマン型コンピュータというハードウェアは究極的には命令型でしか動作しない。 >関数型の機械語なんて存在しない。 >ここ、重要ね。反論はないと思うけど データフローマシンのような非ノイマン型アーキテクチャとか長年試作されてきたし 最近もReduceronはじめFPGAでグラフ書換プロセッサが実装されてるわけだが、 なにを根拠に「存在しない」とか言ってるのこのひとは?
- 1005 名前:デフォルトの名無しさん [2015/07/14(火) 19:33:26.76 ID:X8vX3uS6.net]
- 次スレ
peace.2ch.net/test/read.cgi/tech/1436869629/
- 1006 名前:デフォルトの名無しさん mailto:sageteoff [2015/07/14(火) 19:48:07.17 ID:V8pOZFXs.net]
- 次スレは当スレの約17時間後に立った下記重複スレを、実質Part29として活用しましょう。
当スレのレス数が1000になるまでは当スレを、それ以後は下記スレをご利用ください。 >>993のスレは(残っていれば)実質Part30として使います。 (実質Part29) 関数型プログラミング言語Haskell Part28 [転載禁止](c)2ch.net peace.2ch.net/test/read.cgi/tech/1428597032/
- 1007 名前:デフォルトの名無しさん mailto:sage [2015/07/14(火) 20:33:29.57 ID:9t3W2eIV.net]
- HaskellとErlangの並列性能のベンチマークあったけどボロ負けでしたよ
https://github.com/worksap-ate/demo/blob/master/Cloud-Haskell.md
- 1008 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 00:18:57.00 ID:jeRkgPlX.net]
- 趣味でしか触ってなくて、python をやってから haskell に来たのでそれはもう僕からしたら haskell は素敵に速いのです
- 1009 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 00:51:31.43 ID:HWtOn7Kk.net]
- オブジェクト指向
アクターモデル インターネット 圏論 集合論 非ノイマン型はどれですか? 全部ですか?
- 1010 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 01:10:17.43 ID:x7KlsBjr.net]
- >>997
そもそもそれらのどこにコンピュータ・アーキテクチャが 含まれているのか教えてくれ。
- 1011 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 04:12:42.40 ID:WlnCwIoX.net]
- いまだ役たたず
- 1012 名前:デフォルトの名無しさん mailto:sage [2015/07/15(水) 04:18:56.45 ID:meQVGR7r.net]
- >>1000
- 1013 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
- 1014 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|