関数型プログラミング言語Haskell Part12
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/04/29(木) 19:15:28ttp://www.haskell.org/
日本語サイト
ttp://www.sampou.org/cgi-bin/haskell.cgi
ttp://www.shido.info/hs/
過去ログ
関数型プログラミング言語Haskell
Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html
Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
・2chの仕様により、行頭の半角スペースは表示されません。
コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0237デフォルトの名無しさん
2010/05/29(土) 13:50:070238デフォルトの名無しさん
2010/05/29(土) 14:35:07quick sortちゃう?
0239デフォルトの名無しさん
2010/05/29(土) 14:53:310240デフォルトの名無しさん
2010/05/29(土) 15:19:22とりあえずトランザクション制御とか
0241デフォルトの名無しさん
2010/05/29(土) 15:27:540242デフォルトの名無しさん
2010/05/29(土) 15:43:400243デフォルトの名無しさん
2010/05/29(土) 16:01:14フォンノイマンの死に様
0244デフォルトの名無しさん
2010/05/29(土) 16:04:12人物を語るのが一番良い印象を与えやすいんだよね。
関数がどうのこうのと技術的な話なんて興味を持つ動機には成り得ないよ。
0245デフォルトの名無しさん
2010/05/29(土) 16:16:09人物について語るのって専門の話を回避するテクニックであって、
専門的な事を話す目的があったらそれじゃダメじゃん。
0246デフォルトの名無しさん
2010/05/29(土) 16:16:28何に対しての「逆」を想定してるんだ?
>>222,226 の逆であれば、Haskell を一通り習った人が
CやJavaの素人に入門的な話をするという事だと思うが、
それなら Hello, World も、人物の話も、
それほど適切ではないような気がするが。
0247デフォルトの名無しさん
2010/05/29(土) 17:43:23データ構造にしても、可変の方がはるかに蓄積が多いから、まず不変を学習してから可変に移るというのは異常。
0248デフォルトの名無しさん
2010/05/29(土) 20:46:07あれから、つまるところ関数型言語の本質はなんだろう、などと考え始めて
1日つぶれてしまいました。
余り大上段に構えず、こんな便利なことができる、程度の紹介にとどめておいた方がいいですね。
とりあえず高階関数だけはおさえておこうと思います。
0249デフォルトの名無しさん
2010/05/29(土) 20:48:030250デフォルトの名無しさん
2010/05/29(土) 20:49:15あれはあんまり参考にならんぞw
考え方が偏りすぎている
0251デフォルトの名無しさん
2010/05/29(土) 21:15:120252デフォルトの名無しさん
2010/05/29(土) 21:21:09だってその人自身が社会を構成する人間の一人なんだから。
0253デフォルトの名無しさん
2010/05/29(土) 21:37:21高階関数と再帰の具体例を挙げて関心を持ってもらうストーリーがよさそうですね。
あとは「変」数じゃなくって…って話かな。
C言語の人は関数ポインタを使うのとどう違うの?とか聞いてくるかもしれませんね。
え?そんなビギナーの聴衆はいないって?w
0254デフォルトの名無しさん
2010/05/29(土) 21:40:35関数型言語の本質はラムダ計算にある。
0255デフォルトの名無しさん
2010/05/29(土) 21:42:04遅延評価なんだから無限リストも。
0256デフォルトの名無しさん
2010/05/29(土) 22:02:370257デフォルトの名無しさん
2010/05/29(土) 22:03:53俺は A Gentle Introduction to Haskell の fibs の例はなかなか理解できなかった。
>>247
既存のアルゴリズム本を参考にして
リストに (!!) でアクセスしまくるコードを書いて来た人を思い出した
0258デフォルトの名無しさん
2010/05/29(土) 22:39:43server と client のプログラムを理解するのに時間がかかったな。
紙に鉛筆で簡約ステップを書き下して正しいと頭では分かっていても、
初めは問題なく動くのがなんか不思議な感じだった。
ああいうのをスラスラと例示できるようになりたいな。
0259デフォルトの名無しさん
2010/05/29(土) 22:42:210260デフォルトの名無しさん
2010/05/29(土) 22:58:56ないよ
値としての関数は、ローカル変数の値を記録したオブジェクトと生の関数ポインタの組み合わせ(クロージャ)で表現できる
実際GHCなんかはコンパイル時に似たような変換してるはず
0261デフォルトの名無しさん
2010/05/29(土) 23:12:020262デフォルトの名無しさん
2010/05/29(土) 23:44:050263デフォルトの名無しさん
2010/05/30(日) 01:04:03Java の人なら、環境をフィールドとして持つ
call メソッドだけが定義されたオブジェクトみたいなものと言えば通じるんだろうか
0264デフォルトの名無しさん
2010/05/30(日) 15:17:580265デフォルトの名無しさん
2010/05/30(日) 15:22:530266デフォルトの名無しさん
2010/05/30(日) 16:54:04LLの王様で超実用言語のperl6がhaskellで作られた、つまり、haskellは超超実用言語だ。
0267デフォルトの名無しさん
2010/05/30(日) 17:07:280268デフォルトの名無しさん
2010/05/30(日) 17:29:030269デフォルトの名無しさん
2010/05/31(月) 01:51:430270デフォルトの名無しさん
2010/05/31(月) 03:07:22実行ファイルの保存先を./binにしたいのですが、
どのように書けば良いでしょうか?
0271デフォルトの名無しさん
2010/05/31(月) 06:24:16CabalのBuild-type: Simpleは典型的なケースを「シンプル」に記述できるようにデザインされている。
Executableのパスを明示的に指定するのは典型的なケースではないので、他のBuild-type、たとえばCustomなどを調べてみてはどうだろうか。
0272デフォルトの名無しさん
2010/05/31(月) 12:59:23そもそも汎用プログラミング言語はすべてチューリング等価なんだから、
できることは同じ。
生産性と実行効率を改善するための努力が延々と続いている。
0273デフォルトの名無しさん
2010/05/31(月) 13:25:29思考にとって無駄が多すぎる^^; そのてん 生産性の向上はあるわな。
0274デフォルトの名無しさん
2010/05/31(月) 13:41:37なにを生産するかによるな
OSを生産させたら関数型のほうが冗長かもしれないし
関数型のキラーアプリである「あれ」を生産させたらもちろんCのほうが冗長だよね
0275デフォルトの名無しさん
2010/05/31(月) 13:43:450276デフォルトの名無しさん
2010/05/31(月) 15:17:33http://news.ycombinator.com/item?id=1390889
0277デフォルトの名無しさん
2010/05/31(月) 17:53:03「あれ」って何? もうさっきから気になって気になって、仕事が手に付きません
0278デフォルトの名無しさん
2010/05/31(月) 17:55:01どんな種類のソフトウェアを書くにしても関数型がCより冗長にしか書けないということはありえない。
OSがCで書かれているのは、抽象レベルの高すぎる言語はportableでないからだ。
少なくとも昔は、lispなどでは十分に速い実行コードを生成することができなかった。
0279デフォルトの名無しさん
2010/05/31(月) 18:43:060280デフォルトの名無しさん
2010/05/31(月) 18:54:130281デフォルトの名無しさん
2010/05/31(月) 18:56:45>>278 は『ありえない。』って言い切っちゃってるから。
0282デフォルトの名無しさん
2010/05/31(月) 19:05:530283デフォルトの名無しさん
2010/05/31(月) 19:07:15C言語で書かれたプログラムのエミュレーションにはC言語が最適だろう。
0284デフォルトの名無しさん
2010/05/31(月) 19:11:09短くなるよ。その辺のことを冗長で思考を止めやすいといってる。
ちがう?
関数型って思考に素直な印象が強いんだけどな。手続き型って思考する前
の前準備というのか余計な操作が多いという印象なんだな。
手続き型になれちゃってる人には関数型は面倒なんだろうね。
0285デフォルトの名無しさん
2010/05/31(月) 19:11:53プラグインを書きたいとか、Haskell では到底簡潔に書けない様な『種類』のソフトウェアも
沢山あるよね。
0286デフォルトの名無しさん
2010/05/31(月) 19:22:18その関数が実行される環境を無視するならね。
本来考慮すべきかもしれない事を無視していいなら、それは思考に素直にもなるでしょう。
0287デフォルトの名無しさん
2010/05/31(月) 19:24:11Haskellは、記号的な問題を解くのに強い。
そういう問題は関数に落とし込めるようにあらかじめ抽象化されているから。
> 特定のアプリケーションのプラグインを書きたい
Lispでマクロを使うといい。
0288デフォルトの名無しさん
2010/05/31(月) 19:30:20>> 特定のアプリケーションのプラグインを書きたい
>Lispでマクロを使うといい。
これってどういう意味だか誰か分かる?
Lisp って CL の事で良いのかな?
マクロはリーダーマクロ?
それとも defmacro の話?
それでどうやってプラグインが書けるの?
ちょっと話が見えないな。
0289デフォルトの名無しさん
2010/05/31(月) 19:38:320290デフォルトの名無しさん
2010/05/31(月) 19:45:31記号的というと
・variantがあればLisp風のデータ構造 (括弧は少なめ) を作れる
・concatMapがあればPrologみたいなのを作れる
ただし、クロージャと同じく、関数型ではない言語に取り入れられるかもしれない。
0291デフォルトの名無しさん
2010/05/31(月) 19:47:33アンカー間違ってない?
0292デフォルトの名無しさん
2010/05/31(月) 20:11:51フィボナッチのように数学の問題ということではないかと
0293デフォルトの名無しさん
2010/05/31(月) 20:14:460294デフォルトの名無しさん
2010/05/31(月) 20:55:11なにを指して無視といってるのかがよくわからない。
0295デフォルトの名無しさん
2010/05/31(月) 21:07:19>>292
0296デフォルトの名無しさん
2010/05/31(月) 21:46:00結果はまだ先なのかな。どんな反応があったか、よかったらレポートして下さい。
0297デフォルトの名無しさん
2010/05/31(月) 23:01:042ちゃん規制されていたから、亀レスだけど、「こんな便利なことができる」っていう紹介で良いと思います。
例えば、(都道府県名, 市長村名, 人口, 面積)みたいなリストを作っておいて、それをmap、filter、sortBy、groupByで操作して、都道府県を人口順に並べるとか、ある県の人口密度を出すとかを、ghciでやると面白いのではないでしょうか。
0298デフォルトの名無しさん
2010/06/01(火) 06:51:44そうですね。
Haskellの素晴らしさを示すには、オーディエンスが慣れ親しんだ問題を
エレガントに解く方法を示すのがいいと思います。
彼らが使っている手続き型言語による解法との比較もしてはどうでしょうか。
でもただエレガントというだけでは、感情的な反発を引き起こしたり、
マニアックな奴だと思われるかもしれませんから、
人気度やパフォーマンスなどの客観的(統計的)なデータを示し、
長所と短所の両面も伝えてはどうでしょうか。
0299デフォルトの名無しさん
2010/06/01(火) 08:54:35それは話してるレイヤが違うだろ
CにもHaskellにも「関数」と呼ばれるものがある。Cの関数は実行時に作れないがHaskellのは作れる
ではCの関数だけを使ってHaskellの関数の真似をすることができるか?みたいな問題
ここでいう「真似」というのは関数に渡せるとか変数に入れられるとかそういう言語の「内部」での性質を真似するということ
チューリング完全性の議論はプログラムが全体としてどういう振る舞いをするかしか問題にしていないので、別の話
0300デフォルトの名無しさん
2010/06/01(火) 09:53:01Haskellは実行時にCの関数を作れないが、Cは実行時にHaskellの関数を作れる
Cの関数だけを使ってHaskellの関数の実装をすることができる
「実装」というのはHaskellの「内部」を実装するということ
0301デフォルトの名無しさん
2010/06/01(火) 11:43:16他の言語は、金融工学を駆使した電子マネーを目指しているようだ
0302デフォルトの名無しさん
2010/06/01(火) 11:57:13Cはどこでも動くが、金塊はどこでも貨幣として使えるわけじゃない
0303デフォルトの名無しさん
2010/06/01(火) 12:10:14というか電子マネーと金融工学ってあまり関係ないんじゃないか
0304デフォルトの名無しさん
2010/06/01(火) 14:45:590305デフォルトの名無しさん
2010/06/01(火) 14:53:26電子マネー → 具体的なものと機能は同じだけど、実体ははきりせず抽象的なもの
金融工学は、その抽象的なものから成り立つのを助け、利益を出そうとするもの。
C → 具体的にメモリをいじくったするもの
JavaとかPHPとか → 具体的なものと、機能は同じだけど、にラップをかけて抽象的に扱う。動作は遅い。
金融工学 → ガーベージコレクション
0306デフォルトの名無しさん
2010/06/01(火) 16:37:44ポインタ演算はあるがメモリ割り当てまでコントロールするわけではない。
JavaのHotSpotみたいな最適化技術は金融工学みたいなものといえなくもない。
0307デフォルトの名無しさん
2010/06/01(火) 19:03:18Haskellを C言語にコンパイルする言語をHaskellで作ればいいんじゃね?
0308デフォルトの名無しさん
2010/06/01(火) 19:11:10C のソースを吐いても GC 前提だったりランタイムライブラリが必須だったら使えないでしょ。
0309デフォルトの名無しさん
2010/06/01(火) 19:37:53これ何に使うんだろうって思ったけど、iPhone や iPad で Haskell を動かしたい時に良いかも。
0310デフォルトの名無しさん
2010/06/01(火) 19:39:250311デフォルトの名無しさん
2010/06/01(火) 20:03:10その昔、JavaOSというOSが勝手にGCしちゃう変なモノがありましてね…
0312デフォルトの名無しさん
2010/06/01(火) 20:11:34クロージャは「定義された場所のほかに、生成された時刻を持つ」。
(時刻とか言ったら怒られそうだが)
一方、Cの関数はコードの場所だけで特定される。
コードを変更して再コンパイルとかしないと、新たな関数を作ることはできない。
0313デフォルトの名無しさん
2010/06/01(火) 20:11:35OS レベルで一括してメモリを回収するのは別に良いと思いますよ?
今はそういう話はしていないですけどね…
0314デフォルトの名無しさん
2010/06/01(火) 20:25:590315デフォルトの名無しさん
2010/06/01(火) 21:51:480316デフォルトの名無しさん
2010/06/01(火) 21:59:390317デフォルトの名無しさん
2010/06/01(火) 22:34:13そういう場合は、強硬に主張している相手を値踏みして、
切っても問題なさそうな感じだったら無理矢理切ればいい。
真実がどうであろうと、どっちみち現時点では時間の浪費に
しかならないという算段がつくならその話は結局無駄。
0318デフォルトの名無しさん
2010/06/01(火) 23:10:25ということは、lex+yaccは「関数を実行時に作れる」言語ということになりますな
0319デフォルトの名無しさん
2010/06/01(火) 23:17:11Haskellが実行時にリストを作れないっていうのと同じくらい馬鹿げてる
foreign import "wrapper"は実行時にコード生成するし
0320デフォルトの名無しさん
2010/06/01(火) 23:18:39高根社長のSM趣味サイトMaskRと
副業のSMクラブ銀座プレジス・動画配信専門リアルミストレスばかり語られるが
高根社長の本業コムラッドについても語ろう
銀座プレジス
http://www.prezis.jp/top.htm
MaskR
http://maskr.com/
プレジスを語ろう
http://set.bbspink.com/test/read.cgi/sm/1246009466/
動画配信専門リアルミストレスってどうよ?
http://set.bbspink.com/test/read.cgi/sm/1249183350/
9 :名無しさん@どっと混む:2010/01/03(日) 18:27:00 ID:RSEbBiG0O
高値はもう大麻やめたの?
10 :名無しさん@どっと混む:2010/01/04(月) 05:15:29 ID:A3l1qdv+O
タカネ社長ってどうやってばれないように脱税してんだろ?
億単位で脱税して億ション暮らしなんて凄いよな
監査役の奥さんもグルなのか?
12 :名無しさん@どっと混む:2010/01/05(火) 01:47:06 ID:KAHwqMrBO
株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade
株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade株式会社コムラッド株式会社Comrade
13 :名無しさん@どっと混む:2010/01/05(火) 01:47:47 ID:KAHwqMrBO
高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉高根英哉
0321デフォルトの名無しさん
2010/06/01(火) 23:19:21高根はMASKRでレイプ仲間募集するのやめたんだね
mixiで募集中か
21 :名無しさん@どっと混む:2010/01/10(日) 19:36:45 ID:FdRwgXUTO
風俗店やってるってことは高根社長は暴力団と繋がってるんだね
どこの組にいくらみかじめ料払ってるんだかw
23 :名無しさん@どっと混む:2010/01/23(土) 03:43:12 ID:Pdcv8aq0O
タカネ社長未成年に酒飲ませてレイプ
24 :名無しさん@どっと混む:2010/01/29(金) 18:16:06 ID:zMwtdkIsO
高根社長のレイプ趣味は病気だから治らない
25 :名無しさん@どっと混む:2010/02/01(月) 01:39:32 ID:uaH5mo2nO
前科者
26 :名無しさん@どっと混む:2010/02/09(火) 00:52:46 ID:JwGmN2cG0
>>25
容疑はレイプ?買春?管理売春?公然猥褻?薬物?脱税?詐欺?傷害?
28 :名無しさん@どっと混む:2010/02/14(日) 22:56:30 ID:lykq8x1VO
どこかのスレで人を死に追いやったと書いてあった
33 :名無しさん@どっと混む:2010/03/04(木) 12:49:19 ID:J8YxaRGO0
金がないって脱税がばれて追徴課税でも来たか?
せっかく脱税の隠れ蓑にプレジス営業してるのに残念だったなw
38 :名無しさん@どっと混む:2010/03/12(金) 21:09:53 ID:L0W4+sivO
首吊り首絞めプレイ大好き高根英哉
0322デフォルトの名無しさん
2010/06/01(火) 23:20:03>>18
高根英哉blogでレイプ仲間募集中
私とともにマスクの女どもを弄ぶ仲間を募集する
急に思いついたら連絡をして、集まれるような仲間だ
だから、複数名募集するし、いついつという日時があるわけでもない
条件は以下のとおりだ
・SMを実践している、または興味がある
・マスクを用意できる
・都内でイベント参加できる
・イベント内容およびこの仲間を通じて知りえた情報を口外しない
・成人男子である
・携帯電話および携帯メールアドレスを私に公開できる
・酒が好きである
希望者は私宛にメールを送ってほしい
全員が参加できるわけでもないので、こちらの選択に任せてもらう
なるべく想いを書いてもらうほうがわかりやすいし
経験や顔写真も歓迎。
r[email protected]
[email protected]
[email protected]
0323デフォルトの名無しさん
2010/06/01(火) 23:29:040324デフォルトの名無しさん
2010/06/01(火) 23:37:41Haskellは型安全な言語だと思っていたのに…
0325デフォルトの名無しさん
2010/06/01(火) 23:49:51純粋でなくてもいい部分は限りなく自由なのも、Haskellの魅力だと思うね
0326デフォルトの名無しさん
2010/06/02(水) 00:22:25ちなみにmapする関数をユーザに入力させるプログラムはどうやって書けばよいでしょうか?
getLine >>= \s -> map (??? s) xs
0327デフォルトの名無しさん
2010/06/02(水) 00:46:080328デフォルトの名無しさん
2010/06/02(水) 01:46:44お望みのものと違うかもしれないけど。
ghc --make -package ghc Main.hs
module Main where
import GHC
import GHC.Paths ( libdir )
import DynFlags ( defaultDynFlags )
main = do {
; s <- getLine
; defaultErrorHandler defaultDynFlags $ do {
; runGhc (Just libdir) $ do {
; dflags <- getSessionDynFlags
; setSessionDynFlags dflags
; pm <- findModule (mkModuleName "Prelude") Nothing
; setContext [] [pm]
; runStmt ("map (" ++ s ++ ") [0..10]") RunAndLogSteps
}
}
}
0329デフォルトの名無しさん
2010/06/02(水) 08:51:270330デフォルトの名無しさん
2010/06/02(水) 20:09:00ありがとう。
なるほど、関数をHaskellの世界に持ってくるわけではなく、
引数を向こうの世界に渡して実行させるわけですか。
確かにこれなら、Haskell側は汚染されずにすみますね。
0331デフォルトの名無しさん
2010/06/02(水) 20:10:21>>327
これは、ユーザが文字列として与えた関数をHaskellの関数にできるということでしょうか?
0332デフォルトの名無しさん
2010/06/02(水) 20:11:290333デフォルトの名無しさん
2010/06/02(水) 20:32:48「ユーザが文字列として与えた関数をHaskellの関数に」することも当然できる
0334デフォルトの名無しさん
2010/06/02(水) 20:38:480335デフォルトの名無しさん
2010/06/02(水) 20:47:270336デフォルトの名無しさん
2010/06/02(水) 20:48:40■ このスレッドは過去ログ倉庫に格納されています