[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/18 18:02 / Filesize : 261 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型プログラミング言語Haskell Part28



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/

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 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<261KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef