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