関数型プログラミング言語Haskell Part23
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトのモナドさん
2013/08/10(土) NY:AN:NY.AN前スレ: 関数型プログラミング言語Haskell Part22
http://toro.2ch.net/test/read.cgi/tech/1364009659/
haskell.org
http://www.haskell.org/
日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://www.shido.info/hs/
過去ログ (10〜)
Part21 ttp://toro.2ch.net/test/read.cgi/tech/1358702176/
Part20 ttp://toro.2ch.net/test/read.cgi/tech/1350428908/
Part19 ttp://toro.2ch.net/test/read.cgi/tech/1340760070/
Part18 ttp://toro.2ch.net/test/read.cgi/tech/1331902463/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
0159デフォルトの名無しさん
2013/09/07(土) 05:24:26.31>>141←こういう奴はもはや生きている価値すらない亡者。己を無価値とし他人の命令に全てを委ねてるやつ。
0160デフォルトの名無しさん
2013/09/07(土) 07:36:08.42それはそうと最近世界観という語を物語の世界の設定情報の総体的意味で使用する人が増えてきました
指摘すれば空気の読めない奴扱いを受けます
この気持ちとどう折り合いをつけたら良いですか?
0161デフォルトの名無しさん
2013/09/07(土) 08:10:31.810162デフォルトの名無しさん
2013/09/07(土) 10:18:09.64玩具として、研究者や学生の自己満足や話のネタに、
教科書や黒板を賑わすアクセサリーとして、
あるいは頭の体操としての価値は認める。
だが、仕事ではほとんど使い物にならない。
やれば作れる、実際に作った、そんな言い分は聞き飽きた。
主要なソフトウェアのほとんどは非関数型で書かれている。
関数型がプチブームだが、爆発的に採用が増えているとも考えられない。
いずれ関数型のブームは去るだろう。
仮に関数型が生き残ることがあったとしても、
手続的な言語における一部の機能としてだろう。
0163デフォルトの名無しさん
2013/09/07(土) 10:48:57.22GHCなら、コンパイラの気分次第
常に1回の計算で済むことは期待できない
常に2回計算することも期待できないけど、
-fno-cse -fno-full-lazinessを与えればたぶん2回計算してくれる
0164デフォルトの名無しさん
2013/09/07(土) 12:11:17.120165デフォルトの名無しさん
2013/09/07(土) 14:21:40.110166デフォルトの名無しさん
2013/09/07(土) 15:07:15.72聞いたから何だ?
最後までちゃんと話せ
なにか質問があるのか?
議論したいのか?
Haskellについて何か語りたいのか?
0167デフォルトの名無しさん
2013/09/07(土) 15:19:10.12俺もたった今興味を持ちそうになっただけなんだ。。。
そんなに圧迫面接しないでくれよう。。。
0168デフォルトの名無しさん
2013/09/07(土) 15:43:04.310169デフォルトの名無しさん
2013/09/07(土) 15:49:06.080170デフォルトの名無しさん
2013/09/07(土) 16:13:11.04それは悪いことしたが、それとは別に、途中で切らずに最後まで何か言えよ
Haskellの何が楽しいのか訊いても良いし、
入門者に適したページを紹介してくれ、でも良いから
0171デフォルトの名無しさん
2013/09/07(土) 16:35:44.81たまにコンパイルエラーで「Xhogehogeを使え」とか言われるのですが
安易に使って将来使えなくなったりするのが不安で。
言語拡張といっても、標準になりそうなもの、実装されたばかりのもの、
廃止されるまでの過渡状態のものなど色々だと思いますが、まとまった
リストがあればいいのですが。
0172デフォルトの名無しさん
2013/09/07(土) 16:59:39.75GHC以外の処理系に対応したいのでなければ躊躇なく使うべき
よほど不人気でない限り、言語拡張が廃止されることはない
(ここ数年で廃止されたのはLinearImplicitParamsとGenericsくらいだと思う)
TypeFamiliesとかTemplateHaskellみたいに人気のある拡張でも
標準に入る見込みがなさそうなのもあるし
0173デフォルトの名無しさん
2013/09/07(土) 18:32:11.940174デフォルトの名無しさん
2013/09/07(土) 18:40:07.14い、威圧的だ(唖然
0175デフォルトの名無しさん
2013/09/07(土) 20:37:40.57研究室新配属の3年生を叩き上げる院生キタ━━(゚∀゚)━━!!!
0176デフォルトの名無しさん
2013/09/07(土) 20:42:13.59単相性制限は望まれても愛されてもいなかった
0177デフォルトの名無しさん
2013/09/07(土) 21:50:22.16まあ、必ずしも使い回す必要はないんだけど、大きい行列を扱うのは向いてない?
0178デフォルトの名無しさん
2013/09/07(土) 22:03:20.90大きい行列を扱うのなら、C言語でもHaskellでも他の言語でも、
普通はLAPACKなどの行列専用ライブラリを使うのでは?
HaskellからLAPACKを使うのならhmatrixというライブラリがある。
行列とは意味合いが異なるけど、Haskellで配列を効率よく扱う方法は他にもある。
たとえばrepaというライブラリ。
これは、配列に対するいくつもの演算(2つの配列の要素同士を加算したり、畳み込みをしたり)を、
内部で合成してひとつの一連の計算にして実行する。
つまり、計算用の中間バッファを極力作らないように自動的に処理してくれるから、
こと演算においては「メモリを使い回す」ということをプログラマ側が考えなくても良い。
(repa で2次元配列を行列とみなして、行列同士の積を演算することもできる)
0179デフォルトの名無しさん
2013/09/07(土) 22:26:39.79レスありがとう
hmatrixは少しだけ見てみたんだけど、大きい行列を繰り返し使う事が効率よくできるかどうか分からなかった
ちゃんと調べてみます
repaってのはよく分からないんだけど、例えば行列の各成分の要素を定義する関数を書いて、その行列に
列ベクトルを掛けると内部では行列そのものは保持しない(結果のベクトルの保存にだけメモリを使う)って
いう動作になるのかな?それならかなり理想的なんだけど
0180デフォルトの名無しさん
2013/09/07(土) 22:36:14.340181デフォルトの名無しさん
2013/09/07(土) 22:40:29.40素人考えだと、大きい行列ならメモリ確保のオーバーヘッドは相対的に小さくなりそうなんだけど
メモリアクセスの局所性とかに効いてくるのかな
0182デフォルトの名無しさん
2013/09/07(土) 23:10:23.69> 行列の各成分の要素を定義する関数を書いて
これはできる。
i 行 j 列目の値を表す関数をひとつ書くことになる。
その関数の中で、変数 i と j を使って要素の値を計算する。
> その行列に列ベクトルを掛けると内部では行列そのものは保持しない
まず repa には行列というものはなくて、多次元配列を扱うものだから、
n行1列の2次元配列を定義して、それをプログラマが列ベクトルとみなして扱うことになる。
で、繰り返すが repa は行列を扱うライブラリではないから、
2次元配列を行列とみなした場合、その積の演算はプログラマが定義してやる必要がある。
ghc の最適化オプションを ON にすれば
具体的には、2つの配列を元に1つの配列を作る関数が用意されているから、
その関数に「3つ目の配列の要素を定義する関数」を渡してやる。
その渡した関数の中で行列の積を表現する計算をしてやることになる。
> 結果のベクトルの保存にだけメモリを使う
すまん、正直言ってそこまで最適化されるかは私には確証がない。
ghc の最適化オプションを ON にすれば、理論的にはちゃんと最適化されるはずだが。
ただ、ここまで言っておいてなんだが、repa の扱いは初学者には少々難儀するかも知れん。
配列定義の表現が独特で、各関数の意味も理解するのが難しいと思う。
0183デフォルトの名無しさん
2013/09/07(土) 23:12:49.06そうなんだが、「必ずしも使い回す必要はないんだけど」ということから、
質問者が知りたいのは、使い回すことではなく、
大きな配列を効率よく扱う方法一般ではないかと思ったので紹介した。
0184デフォルトの名無しさん
2013/09/07(土) 23:44:53.22>C言語で大きい行列を扱うときにallocしたメモリを使い回すのはよくやられると思うけど、Haskellでそういうことするのは無理かな?
普通はやらないけど(たとえばhmatrixはやらない)、自分で書くならもちろんできる
>まあ、必ずしも使い回す必要はないんだけど、大きい行列を扱うのは向いてない?
そんなことはない
0185デフォルトの名無しさん
2013/09/08(日) 00:33:30.46他人の褌で相撲してる感じ
地産地消が関の山で他の言語に影響与えられないのかよ
0186デフォルトの名無しさん
2013/09/08(日) 01:25:09.920187177
2013/09/08(日) 01:36:43.19repaはcabalでインストールしようとしたらDLできなかったんで、
まずはhmatrixから使ってみるよ。
0188デフォルトの名無しさん
2013/09/08(日) 01:46:47.951000×1000はダメ
Celeron 2.7GHz, メモリ1GB, WinXP, ghc 7.0.3
0189デフォルトの名無しさん
2013/09/08(日) 05:41:28.15そもそも代数的って何?
C言語のstructみたいなデータ型と何が違うの?
0190デフォルトの名無しさん
2013/09/08(日) 07:58:29.24> 結局C/C++で創られた有力ライブラリを呼び出すことばかりしかしてないじゃん
君は使ったことも調べたことすらないから知らないのだろうけど、
repa は 100% Haskell 製の高速配列ライブラリだよ。
> 地産地消が関の山で他の言語に影響与えられないのかよ
これも君は知らないのだろうけど、
Parsec や QuickCheck などの Haskell 製ライブラリは、
多くの他の言語のライブラリに大きな影響を与えたよ。
0191デフォルトの名無しさん
2013/09/08(日) 08:10:26.590192デフォルトの名無しさん
2013/09/08(日) 09:04:26.18なんだかんだでCのライブラリを呼び出すものが一番安定しているイメージ
0193デフォルトの名無しさん
2013/09/08(日) 09:15:54.04ここに分かりやすい説明がある。
http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/
英語のブログだが、口語的ではなく説明口調なんで、変な言い回しはなく、比較的読みやすい。
Part1 から 3 まであるが、1 を読むだけで「代数的」の意味は大体理解できると思う。
0194デフォルトの名無しさん
2013/09/08(日) 09:48:08.42>>189ではないけど、この記事は親切丁寧かつ読みやすくていいね
紹介ありがと
0195デフォルトの名無しさん
2013/09/08(日) 10:49:05.611000×1000で消去法が動かないなら書き方が悪い気がする
0196デフォルトの名無しさん
2013/09/08(日) 10:52:03.49おお、ありがとう
頑張って読んでみる
0197デフォルトの名無しさん
2013/09/08(日) 11:35:21.70こんな直球かつ平坦でわかりやすいものを、よく持ってこれるな。
引き出しの多さに感心した。
0198デフォルトの名無しさん
2013/09/08(日) 12:15:59.76今、Data.Arrayだけで実装してみたけど、100×100でもヤバい
0199デフォルトの名無しさん
2013/09/08(日) 16:04:39.53どこかに貼ってくれる?
0200デフォルトの名無しさん
2013/09/08(日) 16:39:16.46100万要素の配列だから問題ないと思うが、listArrayがバカなことをやってたら…
0201デフォルトの名無しさん
2013/09/08(日) 17:57:11.54その100個の行列を一個の配列上に作るのはメモリの無駄遣いだろ
毎回新しく100×100行列を作って使い捨てるべき(それか可変配列にしてメモリ再利用)
0202デフォルトの名無しさん
2013/09/08(日) 18:12:59.36だれウマwww
0203デフォルトの名無しさん
2013/09/10(火) 08:30:32.030204デフォルトの名無しさん
2013/09/10(火) 13:17:40.20http://beta.hackage.haskell.org/
0205デフォルトの名無しさん
2013/09/11(水) 01:06:41.210206デフォルトの名無しさん
2013/09/11(水) 08:45:28.31ちなみにRubyプログラマの私は900万です。(発言小町風)
0207言語バカは死ねw
2013/09/11(水) 20:56:05.53焼くただずが
言語バカってまじいらねーわ
なんかくだらねえ文法とか言ってるだけwwwつかえねーwwwまじつかえねーわw
そこらへんのクソウェブサービス乱立してるやつほうがまだ使えるわw
さっさとのたれ死ネゴミ
0208デフォルトの名無しさん
2013/09/11(水) 21:02:30.340209デフォルトの名無しさん
2013/09/11(水) 21:07:40.85自分が何者であるかHaskellをやれば簡単に証明できるからなぁ
ファッションみたいなものかなぁ
0210デフォルトの名無しさん
2013/09/11(水) 22:01:16.710211デフォルトの名無しさん
2013/09/11(水) 22:11:15.96自己陶酔でも何でも歓迎
0212デフォルトの名無しさん
2013/09/11(水) 22:11:18.460213デフォルトの名無しさん
2013/09/12(木) 14:00:16.60- Adjusting package dependencies after a release to match reality
これはいい。
- Package “candidates”.
publish後に間違い見つけたら今と同じ状態になるんじゃね?
0214デフォルトの名無しさん
2013/09/12(木) 22:30:52.11それが私の夢です
0215デフォルトの名無しさん
2013/09/12(木) 22:49:08.43後はハードウェア依存か環境依存で車輪の再発明をしているだけでそ
OSSなんか普及することで、その堅ろう性を保てるわけで
プロプライエタリのホゲなんて今後はビジネスモデル自体が疑われるべき存在でふ
0216デフォルトの名無しさん
2013/09/12(木) 22:54:29.09そもそも動的言語で書かれたWebサービスって、実際に開発効率良いの?
PHPにしろjsにしろ、デバッグ効率が悪いだけにしか思えないんだけど
0217デフォルトの名無しさん
2013/09/12(木) 22:58:23.080218デフォルトの名無しさん
2013/09/12(木) 23:13:26.86プレゼン効率が最高に高い
打ち合わせしながらプロトタイプが完成する
製品版の実装?
そんなの知るか
0219デフォルトの名無しさん
2013/09/12(木) 23:52:23.26Javaのweb frameworkですらscaffordに相当する機能あるのに
プレゼン効率なんてものも究極的には言語習得の慣れの問題にしか思えないんだけど
言語習得のイニシャルコストを我慢すれば、関数型言語の方が動的言語より
トータルで見たとき開発効率が良さそうってイメージが拭えない
0220デフォルトの名無しさん
2013/09/13(金) 00:02:45.23JavaとCは向こうが知ってるからその場でごまかせない
0221デフォルトの名無しさん
2013/09/13(金) 03:45:37.22ごまかしで食い繋ごうとしてるレベルではそうらしいな。
0222デフォルトの名無しさん
2013/09/13(金) 04:46:02.310223デフォルトの名無しさん
2013/09/13(金) 05:34:16.23関数型言語はイニシャルコストが掛かる、の一言じゃ済まない
ベースに数学的な理論を使っているし、関数=数学だから、使いこなせる人もレビューする人も限られる
コスト以前に現実的かどうかの議論が必要なレベル
0224デフォルトの名無しさん
2013/09/13(金) 05:36:29.84rmsは何処にでもいる
0225デフォルトの名無しさん
2013/09/13(金) 06:07:38.51中小企業のアプリ開発程度の規模だと、
型の齟齬による誤謬なんて起こらないけどね。
0226デフォルトの名無しさん
2013/09/13(金) 09:55:32.260227デフォルトの名無しさん
2013/09/13(金) 12:46:29.89そもそも関数型は開発プロセスについての研究が途中
とても金を出せるレベルじゃない
0228デフォルトの名無しさん
2013/09/13(金) 13:14:06.46戦う概念として世界をGNUで再構築し偏在することになった
おヒゲの魔法少女である。
0229デフォルトの名無しさん
2013/09/13(金) 13:28:29.59数学的理論って言っても、せいぜいwikipediaの記事7,8頁分ぐらいも読めば十分で、
PHPでやるような手続き的な記述ぐらい、すぐに出来るようになるんじゃないの?
それをイニシャルコストだって言ってるんだけど
>>226
これを読めると世代とクラスタを高確率で判定できる
>>227
webだと、色々なものがフレームワークで定石化している印象があって、中堅企業ならともかく、
地方に根付いたweb系ベンチャー()やco-worker()なら手出して良いでしょ
>>222,224
あんたらム板の管理でもしてるの?
0230デフォルトの名無しさん
2013/09/13(金) 14:44:01.40PHPでやるような手続的な記述を関数型言語で記述できるようになる程度の
数学的素養を身につけるために十分なwikipediaの記事7、8頁とやらを教えろください
0231デフォルトの名無しさん
2013/09/13(金) 15:20:57.80http://en.wikipedia.org/wiki/Comonad
http://en.wikipedia.org/wiki/Monad_(functional_programming)
http://en.wikipedia.org/wiki/Type_theory
http://en.wikipedia.org/wiki/Lambda_calculus
0232デフォルトの名無しさん
2013/09/13(金) 15:41:06.06>数学的理論って言っても、せいぜいwikipediaの記事7,8頁分ぐらいも読めば十分
>これを読めると世代とクラスタを高確率で判定できる
こういう勘違い野郎は淘汰されるべき。
0233デフォルトの名無しさん
2013/09/13(金) 15:44:05.07それでは何が違うか御教授ねがいます
0234デフォルトの名無しさん
2013/09/13(金) 15:46:56.06小学校からやり直せば。
0235デフォルトの名無しさん
2013/09/13(金) 15:55:06.94実務にいらない、と一蹴するなら結構だが、
真面目に学習するという話で、wikipediaで済むわけないだろ。
それと語彙力だけで簡単に人は測れない。ご教授じゃなくてご教示な。
0236デフォルトの名無しさん
2013/09/13(金) 16:11:11.30少しはググッてから他人の揚げ足とったら?
そもそも道具として使うのであって、
関数型言語の研究するわけでもないんだからwikipediaと参考文献で十分だから
真面目に学習?PHPで書く内容をhaskellに置き換えるだけなのに?
0237デフォルトの名無しさん
2013/09/13(金) 16:18:56.88ある意味簡単じゃね?
0238デフォルトの名無しさん
2013/09/13(金) 16:19:22.86最初から数学理論なんて必要ない、と一蹴してるなら同意する。
だがwikipediaを読むと提案した時点でそういう事ではないんだろ?
本気で理解する事を考えるなら、
素養のない人間には、簡単な概要しかないwikipediaでは足りないだろ。
それとググるって何をだ?
具体的に頼む。
0239デフォルトの名無しさん
2013/09/13(金) 16:32:26.880240デフォルトの名無しさん
2013/09/13(金) 16:49:50.60もしかしてそれが、>>238へに対するレスなのか?
ググってみても、ご教授は質問に答える程度の意味では使わんようだが。
まさか講義しろと?
0241デフォルトの名無しさん
2013/09/13(金) 16:51:33.56おまえの講釈なんてイラナイから参照をよこせ
0242デフォルトの名無しさん
2013/09/13(金) 16:53:19.99おまえの講釈なんてイラナイから参照をよこせ
0243デフォルトの名無しさん
2013/09/13(金) 17:07:31.09あの、まさかそれ反論のつもり?
せめてアンカ付けてくれないか?
まさか自分で墓穴ほってると思わないだろ。
さっきから気味が悪いんだが・・。
0244デフォルトの名無しさん
2013/09/13(金) 17:19:11.49本気で理解するなんて研究開発か研究分野の開拓ぐらいで、
そのレベルで理解する必要があるなら少なくとも関連する論文10稿ぐらい読むだろ
そして、趣味人がPHPの代替にhaskellのコードを書くなんて
レベルの数学理論なんてwikipediaと関連項目で十分だっていってるの
>>243
墓穴を掘っているのはお前。
0245デフォルトの名無しさん
2013/09/13(金) 17:36:26.90>>244
>趣味人がPHPの代替にhaskellのコードを書くなんて
>レベルの数学理論なんてwikipediaと関連項目で十分だっていってるの
理解している奴にとってはよくまとまってる(事が多い)が、
実際は概要程度しかないから、全く素養がなければ記事単体で理解は無理。
構文覚えさせてソース読ませたほうがまだ早いだろ。
本気で理解の程度の違いについては、見解の相違だろうから何も言わない。
それでググるって何を?
0246デフォルトの名無しさん
2013/09/13(金) 17:45:49.21あんなの3、4流の工学部を出てりゃ十分な素養だから
>それと語彙力だけで簡単に人は測れない。ご教授じゃなくてご教示な。
ご教授じゃなくてご教示だと揚げ足を取ったので、
それが正しい日本だと考えた根拠をググッて参照を明確にした上で煽れ
0247デフォルトの名無しさん
2013/09/13(金) 17:56:03.61>あんなの3、4流の工学部を出てりゃ十分な素養だから
なら理系出身で無いなら、素養ないって事になるだろ・・。
自分で限定してどうすんだ。
結局、同一人物なの?
どう見ても自分でURL出して墓穴掘ってるのに、
煽り方がどうとか、論点ずらしのつもりなの?
さっきから変な事言い出すし、気味が悪いんだよ。
0248デフォルトの名無しさん
2013/09/13(金) 17:58:56.120249デフォルトの名無しさん
2013/09/13(金) 18:01:32.17このスレをよく見て判断されるとよろしいんではないでしょうか
0250デフォルトの名無しさん
2013/09/13(金) 18:04:40.58>なら理系出身で無いなら、素養ないって事になるだろ・・。
本質的に素養のない人間は自分で何も調べることが出来ず、多分、
君にはそういった素養がないし、haskellなんて使わない方が良いよ。
>どう見ても自分でURL出して墓穴掘ってるのに、
URLを出したことが、どのような墓穴になるのか具体的な根拠は?
>結局、同一人物なの?
便所の落書きに個人なんてものは存在しない。全てが共有されて局所最適解へ向かう。
0251デフォルトの名無しさん
2013/09/13(金) 18:11:00.280252デフォルトの名無しさん
2013/09/13(金) 18:18:16.90ごめん、もういいや。
ありがとな。時間取らせて悪かった。
0253デフォルトの名無しさん
2013/09/13(金) 18:22:46.95技術幅が狭く、意図的に責任の重い仕事を避けれるから
0254デフォルトの名無しさん
2013/09/13(金) 18:43:08.72ニヤッとしてしまったw
0255デフォルトの名無しさん
2013/09/13(金) 18:56:20.360256デフォルトの名無しさん
2013/09/13(金) 19:04:20.85関数型の概要だけサラッと学ぶのが不十分なら、
本家のtutorialでも順番に読みつつ手でも動かせば?
0257デフォルトの名無しさん
2013/09/13(金) 19:09:40.210258デフォルトの名無しさん
2013/09/13(金) 19:17:30.38■ このスレッドは過去ログ倉庫に格納されています