関数型プログラミング ..
[2ch|▼Menu]
211:206ではないが
02/05/15 14:28
関数型言語にあてはまるかどうかは知らんが、
他人が書いたプログラム(またはライブラリ)を理解するために
デバッガを使って動作を見るのは、けっこうよく使う手だと思う。

>>208
普通は静的な検証ツールはデバッガには含めないと思うけど、
参照透明性の高い関数型言語では、静的/動的の境界はどう定義するんだろう?
例えば多相型の型エラーをデバッグするのって、静的なのか動的なのか…


212:デフォルトの名無しさん
02/05/15 14:42
言語理論に比べて処理系のセオリーが
弱い気がするのは気のせいでしょうか?>>211

213:デフォルトの名無しさん
02/05/15 15:27
>>210
お前のような厨房がな。

214:201
02/05/16 00:31
>>203 並列って言うか、そもそも関数型言語は逐次処理でもないじゃん。
木の好き勝手なところを簡約していくっていうか。
そでで再帰的に定義された無限リストの簡約とかまちがうとこわいな。と。
P.Wadlerの入門書にもそれがらみの話あったよねえ?


215:デフォルトの名無しさん
02/05/16 01:21
関数プログラミングでは、動作手順を記述するわけではないので、命令プログラミングの
動作をステップ実行する従来のデバッグ手法のイメージとはあいいれないかも。

でも、計算順序を無理矢理いれこむ、モナドIO使いまくりのプログラミングなら
命令プログラミングとおんなじだから、print デバッグができるよ。


216:デフォルトの名無しさん
02/05/16 01:39
Windowの表示とかやる場合はモナド使うんですか?
関数型でイベント駆動処理を書くのって、
ちょっと想像できないんですが。

217:デフォルトの名無しさん
02/05/16 13:57
Fudgetあげ
ようとしたけど古いから sage


218:デフォルトの名無しさん
02/05/16 14:49
>>216
GTK+HS のサンプルコードとかみてみれば?


219:デフォルトの名無しさん
02/05/16 17:00
>>216
モナドによるI/Oのコードをじっとみつめると
入力列内の文字種に応じて呼ばれるハンドラの集まりとも見えてくる。
それがメッセージ列に変わったと思えば書けそうな気がしてくる。

220:デフォルトの名無しさん
02/05/17 06:30
>>205
処理系の実行過程の確認
最適化の結果、プログラマーの予想もしないプログラムに変化したりしないとか
その確認をする。勉強にもなるね。
某本にもデバッガでは、シングルステップを使えと載っていた。目から鱗。

221:デフォルトの名無しさん
02/05/17 11:20
>>215
GHCか何かだと、unsafeとか何とかいうモジュールに、
どこでもprintできる関数がなかったっけ。
まさにprintfデバッグのための抜け道として。

222:デフォルトの名無しさん
02/05/17 13:19
>>220
それは要するにデバッガがアナライザだって言ってるだけでは?
そういうのとは微妙に話が違うような気がするなー。
つまり、デバッガにはそういうブラウジング機能とは別に
何かあるって言ってるんだろ?

223:デフォルトの名無しさん
02/05/17 17:10
>>222
いや、デバッグ以外に使い道があるかどうかって話だろ?
だからアナライザとして使ったり、ってのも答えとしてアリだろ。

224:デフォルトの名無しさん
02/05/17 18:54
ナスです。

225:デフォルトの名無しさん
02/05/18 05:44
ウリです。

226:デフォルトの名無しさん
02/05/18 05:45
デバッガっでようするにアナライザだろ。
デバッガがバグを指摘するわけじゃなし。

227:デフォルトの名無しさん
02/05/18 13:13
>>226
書くのが遅い

228:デフォルトの名無しさん
02/05/19 20:37
>>221
遅延評価だと、どのprintが先に実行されるかわかんなくねえ?
そんなんでデバッグできるのか?

229:デフォルトの名無しさん
02/05/19 21:05
>>228
何をデバッグしたいかによるけど。

(文字列やファイルの最終的な内容も含めた)計算結果が
正しければ良いなら、別に求まる順序は重要じゃないよね。

まあprintを使うってことは順序も気にするんだろうから、
もともと$!やseqを使いまくってるんじゃないの?

230:haskell
02/05/26 07:37
age

231:デフォルトの名無しさん
02/05/26 13:54
高階関数に詳しくなりたいので教えて。

232:Super Combinator
02/05/26 14:22
Bird「関数プログラミング」
URLリンク(www.amazon.co.jp)
萩谷昌己「関数プログラミング」
URLリンク(www.amazon.co.jp)
あたりで。

233:デフォルトの名無しさん
02/05/26 18:09
まさみさまがそんな本書いているとはしらなんだ..
竹内先生の Lisp本もじつは読んでないんだよなあ。


234:デフォルトの名無しさん
02/05/26 20:36
日本語で書かれたHaskell本はいつ頃出ますか?
SMLだって出てるのに……。

235:デフォルトの名無しさん
02/05/26 22:00
>>234
日本のHaskellユーザの数が、初回印刷部数(200)を越えたら。

236:デフォルトの名無しさん
02/05/26 22:42
ユーザの数はどうやって数えるんですか?

237:デフォルトの名無しさん
02/05/26 23:11
うちの研究室だけで10人はいるんだから簡単に超えそうなもんだけど(藁

238:デフォルトの名無しさん
02/05/26 23:14
>>237
そこが特別なんじゃないの?

239:デフォルトの名無しさん
02/05/26 23:31
じゃ、漏れが布教用に3冊買ってやるから、早く出してくれよ。
訳本でいいからさ。

240:デフォルトの名無しさん
02/05/26 23:46
つーかさ、200位だったら、
いろんな図書館に要望しまくれば、
なんとかなるんじゃないの?

241:デフォルトの名無しさん
02/05/27 00:06
200じゃだめみたい。
URLリンク(www.onweb.to)

242:デフォルトの名無しさん
02/05/27 11:55
>>237
ここのところ素人も増えてるぞ>オレオレ


243:デフォルトの名無しさん
02/05/28 02:43
有明で売れよ! ってことですか?


244:デフォルトの名無しさん
02/05/28 10:52
>>243
東京ビッグサイトの巨大同人誌即売会サークル抽選当選しますた。
でもジャンルはプログラミング言語とはホド遠いけど(w。

245:デフォルトの名無しさん
02/05/28 22:01
>>244
適当でいいからHaskell本もきぼんぬ
買いに行くから(藁

246:244
02/05/29 14:49
ウチはなんと女装本だぞ。それでも買いに来られるか?(w

って、実際問題としてHaskell本を作る余力はなし。

247:デフォルトの名無しさん
02/06/04 16:02
Haskell本かどうかは分からんが、
R. Birdの「関数プログラミング」第2版を翻訳して出版して欲しい。
流れで近代科学社に。

248:デフォルトの名無しさん
02/06/04 19:43
今売ってる「関数プログラミング」も、
みなしHaskell本では。

249:デフォルトの名無しさん
02/06/04 22:27
ぶっちゃけた話、古いわけよ。

250:デフォルトの名無しさん
02/06/05 00:02
で。
結局、日本語のHaskellの本て有るんですか?
無いんですか?
(というのか無いのか?)

251:デフォルトの名無しさん
02/06/05 02:13
>>237
おどろき。
どんな研究なんだ!?

252:デフォルトの名無しさん
02/06/05 15:33
>>237
ならむしろおまえの研究室で発行しる!

253:デフォルトの名無しさん
02/06/05 21:53
F#のサイトより転載。

Purely functional languages like Haskell
are excellent within certain niches,
but many simple programming exercises
can quickly turn into problems that require a PhD. to solve.

大げさだな・・・

254:デフォルトの名無しさん
02/06/05 22:30
うまいこというな〜

255:デフォルトの名無しさん
02/06/06 21:13
女装+Haskell本期待age


256:デフォルトの名無しさん
02/06/06 23:28
「女装しながら覚えるHASKELL」


257:デフォルトの名無しさん
02/06/06 23:29
「HASKELLによる女装プログラミングの理論と実践」

258:Super Combinator
02/06/07 07:40
Mocking Bird, "Introduction to Female Attire using Haskell", Price Sale, 2002.

259:デフォルトの名無しさん
02/06/07 13:06
Purely functional languages like Haskell
are excellent within certain niches,
but many simple programming exercises
can quickly turn into problems that require a Female Attire. to solve.


260:デフォルトの名無しさん
02/06/07 13:20
ネタスレ化か?

261:デフォルトの名無しさん
02/06/07 22:26
女装した場合には、その人の参照の透明性はどう確保されるのでしょうか?

262:デフォルトの名無しさん
02/06/07 22:34
アブノーマルな野郎は消えろ。

263:デフォルトの名無しさん
02/06/12 09:48
>>216
FranTk

264:デフォルトの名無しさん
02/06/13 16:21
HTk

265:デフォルトの名無しさん
02/06/13 21:34
>>261
女装は代入ではありません。ラップするだけです。
本人への参照はそのままにしてください。

女装人格←女装関連の知り合い

本人人格←普通の知り合い

私個人は女装人格をそのまま丸投げの委譲によって実装しているので、
実質どっちを見てても服装と化粧以外はさほどかわりません。

>>262
頑健なソフトウェアを構築するには
例外の存在をなかったことにして無視してはいけません。

266:244
02/06/13 21:37
>>265もね。

267:デフォルトの名無しさん
02/06/13 23:55
下らんこと書くな。
つまらんし。

268:ち ◆A2MadQ16
02/06/14 04:28
つまらんと不満をいうよりも進んでネタを振りましょう。>>267

269:デフォルトの名無しさん
02/06/23 15:09
おい>>1よ 聞いてくれ。
昨日、母の葬式に出たんです。享年54歳。
そしたらなんか自分、涙が一滴もこぼれないんです。
で、よく見たら会ったこともないような親戚のおばさんですら泣いているんです。
もうね、アホかと。馬鹿かと。
俺な、親の死を目の前にして放心してんじゃねーよ、ボケが。
目の前に人が死んでるんだよ、母親が。
なんか親子連れとかもいるし。一家4人で葬式か。ほんとありがとう。
パパは息子さんに挨拶してくるから車で待ってなさい、とか言ってるの。いい親父だな。
俺な、親が死んでんだからもっと泣けと。
葬式ってのはな、もっと殺伐としてるべきなんだよ。
死に化粧をみた瞬間いつ涙があふれてきてもおかしくない、
泣くか叫ぶか、そんな雰囲気が普通なんじゃねーか。オレ、なんなんだよ。
で、やっと葬式が終わったかと思ったら、なんか次々と母のことが思い出されるんです。
そこでまたぶち切れですよ。
あのな、今さら思い出したところで意味ねーんだよ。ボケが。
得意げな顔して何が、今度の休みには帰るよ、だ。
俺は本当に休みに帰るつもりだったのかと問いたい。問い詰めたい。小1時間問い詰めたい。
俺、適当に親との距離をとりたかっただけちゃうんかと。
親不孝者の俺から言わせてもらえば今、若者の間での最新流行はやっぱり、反抗期、これだね。
親ってのはいつまでも生きているもんだと思っている。これがガキの考え方。
親の期待をかなえたつもりで一人暮らし。そん代わりコミュニケーション少なくなる。これ。
で、「少しだけ仕送りいれといたから」 「ああ、無理すんなよ」。これ最期の会話。
今になって後悔ばかりが思い出される、諸刃の剣。
まあお前ら若いもんは、ほんの少しでもいいから親孝行しなさいってこった。

270:デフォルトの名無しさん
02/06/23 21:05
>>256 それは激しく同意。
 つうか、がっこで関数言語やってた奴が、
 仕事でオブジェクト指向の世界に戻されると、
 「このオブジェクト指向言語の型システムは...」とか、
 「RDBの動的型が云々...」って事を無意識に考えてしまって、結構ハマるんだよね。
 そーゆー意味で、関数言語関係者を招聘したMS Researchの今後に期待

271:デフォルトの名無しさん
02/06/23 23:26
>>270
すまん、>>256でいいのか?

272:デフォルトの名無しさん
02/06/24 01:02
>>270

というわけでこのスレでは Simon P.J. 先生を「サイモン博士」と
呼ぶことを漏れは提案したいっすけど駄目っすか?


273:デフォルトの名無しさん
02/06/26 00:42
Haskellは東大工学部の一部でデフォルトの授業用言語になってて、
そのせいで全国の工学部(の一部)の授業に拡散・伝染してるから、
1000部ぐらいすぐに出ると思ってたんだが、どうよ?
女装じゃ無理かもしれんが…(それとも女装のほうががいけるか!?)

274:デフォルトの名無しさん
02/06/26 07:04
女装って何のこと?

275:デフォルトの名無しさん
02/06/26 09:19
「 Haskell を 1.25 倍使うコピー本」でどうだ。
売り子が女装でなくてじょせーだと嬉しい、ってオイ>漏れ


276:K
02/06/26 20:00
>>273
うちのことだな>東大工学部の一部
講義で教えてもらうまで名前も知らなかった。
日本語の解説書さえあれば使いたい言語なのだが>Haskell

277:デフォルトの名無しさん
02/06/26 20:52
>>276
みんなそんなもんか。
私は大堀先生に感化されてML使ってる。

278:デフォルトの名無しさん
02/06/27 00:01
>>275
女婿だと嬉しいの?

279:!275
02/06/27 00:48
うん、嬉しい。
出来ればレイヤーさんきぼ。

280:デフォルトの名無しさん
02/06/27 22:54
最近のCPUは、条件分岐がたくさんあると頻繁に
分岐予測ミスが発生してストールであぼーんな訳ですが、
関数型言語って手続き型に比べてその辺どうなの?
ガードの存在って影響ある?
CMOVccとかSETccとか使ってくれるのかな。




281:275
02/06/29 11:01
>>280
予測が当たりまくるタイプの条件分岐なら、
問題無いという話を,漏れは聞いたことがある.

で,外れまくってイヤソなタイプのコードもあって,
例えばブレゼンハムのアルゴリズムは,結構イヤソだ,
という報告も聞いたことがある.

漏れの直感ではイヤソなタイプという気がする.
GHC はバージョンupが烈しいんで,最近の奴は
自分にはようわからん.ココは Haskell 板なんで
Haskell の話と思ったが,もしかして strict な
奴の話も必要 ?


282:デフォルトの名無しさん
02/06/29 17:29
>>280
SETccって何?

判定と分岐を分離して、間に命令をはさむDeleySlotの一種のような
ものと勝手に想像したがどう?

283:Super Combinator
02/07/01 00:39
SETcc: 条件付き定義命令。
CMOVcc: 条件付き移動命令。

if (条件)
var = X;
} else {
var = Y;
}

var = Y;
if (条件) var = X; // SETcc or CMOVcc
に。

もちろんvarはregister割り当てされてるのな。


284:デフォルトの名無しさん
02/07/01 02:19
ARMとかに最初っからついてるやつですな。
x86にも最近のはついてるときいて感心した私。

っていうか、関数型言語って naiveな実装だと closure作りまくりで
予測分岐も糞もない、って気がするんだけどだめ?
ちゃんとかりかり tuning する、GHCみたいのだといいかんじになるのかも
しれないけど。よくわからん。

結論: 関数型言語は dataflow machineに実装しよう(ネタ)



285:デフォルトの名無しさん
02/07/01 07:52
>>284
ネタとは言い切れん。
いい加減に今のアーキテクチャでのクロック向上ってのも物理的限界が
見えてきたしね。

286:デフォルトの名無しさん
02/07/01 15:16
>>285
そうだそうだ。(煽)
ついでに非同期って正義 ?

Crusoe の内部論理では活かされてるとか
聞いたことがあるけど > 非同期


287:デフォルトの名無しさん
02/07/11 09:01
URLリンク(univ.ygu.ac.jp)
URLリンク(www.microsoft.com)

288:デフォルトの名無しさん
02/07/11 09:14
URLリンク(www.mail-archive.com)

盛り上げれ

289:石敢當
02/07/11 21:56
GHC 5.04 がリリースされました。


290:デフォルトの名無しさん
02/07/12 01:40
さっそくビルド、あげ!

291:デフォルトの名無しさん
02/07/16 00:36
質問くんで、すいません。
どなたかLinar Typeというものが、どんなモノか教えてもらえませんか?

「論文紹介:How to Declare an Imperative」
URLリンク(www.is.titech.ac.jp)
で見た限り純粋関数型言語でIOや状態を扱うのに
将来有望そうな理論(技術?)に見えました。
URLリンク(citeseer.nj.nec.com) のどこかとかが参考になりそうですが
どれが良いのやら。さっぱり。
だれか基礎と応用の両方を教えていただけないでしょうか?
お願いします。

292:デフォルトの名無しさん
02/07/16 03:03
っていうか、まずその紹介されてる論文の、その章を見れば良いじゃん。(^^;
そしたら、そこからreferされてる論文を次に読むとか…
(citeseerがOKなら英語でOKだよね。)

とりあえず、すでにHaskellを知ってるなら、Cleanって言語の
uniqueness typingって仕組みを使ってみるのが吉かと。
URLリンク(www.cs.kun.nl)で合ってる?>もっと詳しい人

293:デフォルトの名無しさん
02/07/16 10:17
linear logic (線形論理) ね。
論理にヨワい自分は岩波の 2 冊本
「コンピュータサイエンス入門」
で、やっとこ様相論理に辿り付いたトコなんで
有意義な助言はできんが...

とりあえずロジックに関してどれくらいわかってます ?
>>291


294:デフォルトの名無しさん
02/07/16 16:29
分からないんだったらまずはぐぐりなさい。
URLリンク(www.google.co.jp)


295:デフォルトの名無しさん
02/07/16 16:30
又は、
URLリンク(www.google.co.jp)

296:デフォルトの名無しさん
02/07/16 22:58
どうして、そんなに遅いの?

297:デフォルトの名無しさん
02/07/16 23:06
>>296
それは言える…
CleanとかMLとかは速いらしいのに!

298:名無しさん@Emacs
02/07/16 23:37
Haskellは生成されたバイナリよりも、
コンパイラ自体がhaskellで書かれてる
ことによる遅さがちょっとイラつかせる。

また勉強中の身だから偉そうなことは
いえないですね。失礼しました。

299:デフォルトの名無しさん
02/07/16 23:44
Cleanもそうです。

300:291
02/07/17 03:36
沢山のレスありがとうございます。

>>292
英語は、辞書が在れば何とか読めるという程度です。
「uniqueness typing」ですか。Cleanの特徴の一つらしいですね。
評価するたびに違う(多様?)型を生成するというぐらいしか知りません。
参照透明性は確保されそうですが、使いやすいの?
というぐらいの認識しかありません。もう少し調べてみます。

>>293
私も論理に弱いです。
Linear Ligicと言われても、使った公理は無くなる。
つまり公理の有る無しで状態を表すようにするという位しか
わかっていません。
この認識も間違っているかもしれませんし・・・
つたない英語力と乏しい知識を総動員して何か判りやすい文章、本、論文
は無いかとあさっているという状態です。
>岩波の 2 冊本「コンピュータサイエンス入門」
ですか今度、大きい本屋に行ったときでも見てみます。

>>294
日本でも沢山の所が研究しているんですねー。
みてみます。

301:デフォルトの名無しさん
02/07/17 17:54
>>298
それはグラスゴ大-MSRのサイモン教授のコンパイラの話 ?

手軽に遊ぶには、HUGS とかシャルメル大のコンパイラが
おすすめ。

>>300
キーワードは「非古典論理」「数理論理学」といったとこだ。
まとまった解説がウェブには無い(記号が、紙媒体だと圧倒的に
見やすい)のと、ちょい高価だったりなので、そのテの本が
揃った図書館を確保できないと辛いかも。

岩波のそれは時相論理という論理の解説がメイン。
(線形論理も時相論理も様相論理といわれる論理の
一種)線形論理の解説書は一冊だけらしい。

IPSJ の学会誌とか研究報告が見れるんなら↓あたりが手頃そうだ。
URLリンク(www.ipsj.or.jp)
URLリンク(www.ipsj.or.jp)


302:デフォルトの名無しさん
02/07/17 21:02
>>297
>CleanとかMLとかは速いらしいのに!
non-strict な ML と、strict な Haskell を
比較すんなよ (;_;) せめて LazyML とか

303:291
02/07/17 23:57
>>294
国立奈良工業高等専門学校の先生のページに
論理型言語ですが時相と線形理論に関する論文載っていました。
URLリンク(kaminari.scitec.kobe-u.ac.jp)
少し判った気がします。
でも、これを如何いうふうに関数型言語に輸入すればいいのやら。

あと、下の本知っている人いますか?
線型論理入門 竹内 外史
URLリンク(www.amazon.co.jp)

304:291
02/07/18 00:00
>>301
>岩波のそれは時相論理という論理の解説がメイン。
そうなんですか。買おうかな。

>IPSJ の学会誌とか研究報告が見れるんなら↓あたりが手頃そうだ。
学術誌は・・・。大学生のころは読めたのにね。
地元の大学言ってみような?如何しようかな?

305:デフォルトの名無しさん
02/07/18 03:04
> non-strict な ML と、strict な Haskell を



306:名無しさん@Emacs
02/07/18 05:03
なんでいつもMLとHaskellはいがみあるばかりなんですか?
CとC++
JavaとC#
PerlとRuby
他にもそういうの多いですがね。

307:デフォルトの名無しさん
02/07/18 10:17
>>306
そういう低次元な話にもっていくな。

308:302
02/07/18 18:30
>>305 トチった。シクシク

>>306
別に、いがみあう必要ないじゃん。Standard ML では、
引数は適用される前に評価される、Haskell では、
普通はそうじゃない、ってダケの話。

他のヤツだって。.NET 使いたいなら C# 、
ケータイ用アプレットが作りたいなら Java とか、
現実、選択肢は広く持っていたほうが楽しいん
だからさ。


309:デフォルトの名無しさん
02/07/18 20:45
Haskellってnamespace無いの?


310:デフォルトの名無しさん
02/07/18 22:13
>>309
たぶん module 機構がソレ。
Haskell98 仕様書の 5 節、
じぇんとるいんとろの 11 節。
URLリンク(www.haskell.org)
URLリンク(www.haskell.org)


311:デフォルトの名無しさん
02/07/19 00:57
>310
あ、ほんとだ。サンクスコ


312:デフォルトの名無しさん
02/07/19 01:13
>>308
SMLでも遅延評価でますよね。
Hsakellほど積極的では無いですが。

313:デフォルトの名無しさん
02/07/19 01:46
>JavaとC#
>PerlとRuby

この変は似たもの同士だからだろ?

314:哲板過去ログから
02/07/19 17:42
哲学板「論理なぜなにスレッド」の最後のレス
URLリンク(mentai.2ch.net)

114 名前: 考える名無しさん 投稿日: 02/03/08 02:04
「論理学」スレの過去ログから。

229 名前: 考える名無しさん 投稿日: 01/12/10 18:21
論理学の基本的教科書とは何ですか?
様相論理とか線形論理を一通り学びたいのですが。
英語のものでいいものを教えてください。

230 名前: ↑ 投稿日: 01/12/10 18:39
A.S. Troelstra, Lectures Linear Logic, CSLI Lecture Notes 29 (1991)

線形論理の入門書で、線形論理のゼロからを勉強できる本です。線形論理導入のモチベーシ
ョンから始まって、様々なヴァリエーションの線形論理とそれらの性質、代数的、圏論的モデル、
proofnetと、基本的な部分はかなり幅広くおさえてあり、そしてとても解りやすいです。しかも周辺
のトピックも広く紹介されているので、その辺を調べながら読めば、線形論理に限らず、証明論
の勉強になるのではないか、と思います。ただし、大きな問題は、GirardによるLinear Logicのオ
リジナル論文(その他、その後のLinear Logic関係のあらゆる論文)と記法が紛らわしい、というこ
と。嫌でも混同しやすいLinear Logicの記号なのに、同じ記号を別の意味で読み替えたりしなけ
ればならず、かなり厄介ですので、それは覚悟の上でどうぞ。

231 名前: ↑訂正 投稿日: 01/12/10 18:43
A.S. Troelstra, Lectures on Linear Logic, CSLI Lecture Notes 29 (1991)
URLリンク(www.amazon.co.jp)

315:314続き
02/07/19 17:43
>>314-315続き
235 名前: 考える名無しさん 投稿日: 01/12/12 17:18
URLリンク(www.amazon.co.jp)
をかいなさい。

242 名前: 考える名無しさん 投稿日: 02/01/06 15:37
>>229
いまどきならTroelstraとかHughes-Cresswell(古臭いっ)よりこっちがいい。
非古典論理を統一的に学べます.
URLリンク(www.amazon.co.jp)

日本語なら小野寛晰先生の本がおすすめ。

244 名前: 考える名無しさん 投稿日: 02/01/10 02:32
>>242
おいおい、Hughes-Cresswell の第二版は 1996年に出たばかりだぞ。
なんかがらりとかわって別の本みたいになってると思ったけど、違うっけ?

今どきで、お手軽で様相論理絡みの非古典論理というなら、俺は、
URLリンク(www.amazon.co.jp)

これをすすめたい。安いし、哲学の話もそれなりに多く書いてあるから、
この板の人向きと思うが。

316:291
02/07/21 09:40
おひさしぶりの291です。
私にとって言語(英語)の壁は厚いので
そんな立派な本は、ちょっと・・・
という感じです。

とりあえず「コンピュータサイエンス入門」と「線型論理入門」は買いました。
ゆっくり勉強したいと思います。

317:デフォルトの名無しさん
02/07/21 13:30
あーまてまて。^^; 最終目的にもよるが、linear typeの勉強をするのに、
linear logicの教科書まで読破する必要はないべ。(してもいいけど)
俺もlogicのほうは耳学問程度だが、linear typeのほうは
関連する研究で論文を発表できたぐらいには理解してる…つもり。

それよりもプログラム理論のお勉強のほうが重要かも。大堀先生の
「プログラミング言語の基礎理論」って教科書なんかどうだ。
線形型までいってないけど、それ以前に線形でない普通の型の理論を
理解しないと。

本を読むにしても、何も予備知識がないときついだろうから、以下で概説。
もし説明が下手で余計に混乱させちゃったらスマソ

318:317
02/07/21 13:41
HaskellとかMLとか使ってれば、普通の型は知ってることにしていいよな。
言語によっていろいろと書き方は違うが、たとえばintだったら整数だし、
floatやrealだったら浮動小数だし、int -> floatだったら
整数から浮動小数への関数だし、int * floatとか(int, float)とかは
整数と浮動小数の組だし、要するに値を分類してるわけだ。

で、線形型ってのは普通の値の分類をもっと細かくして、
その値を使う「回数」の情報まで付け加えた型なんだ。
テキストだと書きづらいが、int ->1 floatとか
int ->0 floatとかint ->ω floatとか。
それぞれ、「1回だけ呼び出される関数」「決して呼び出されない関数」
「何回でも呼び出させる関数」の型。

319:317
02/07/21 13:51
で、そんなのが何の役に立つかというと、いろいろとあって

・もう「決して使わない」ことがわかった値はゴミなので、ガベコレできる
・式の遅延評価をするときに、「1回しか使わない」とわかっている値は
 後のために覚えなくても良いので、オーバーヘッドを減らせる
・逆に「必ず1回は評価される」ことがわかってる式は、そもそも
 遅延評価しなくて良いので、やっぱりオーバーヘッドを減らせる
・同じように、「必ず1回は実行される」ことがわかってる副作用は、
 (Haskellのモナドみたく)遅延しなくても良いので、MLみたく
 その場で直ちに実行できる(?)

って感じ。最後のは俺がよく知らないので、Cleanとかに詳しい人がいたら
フォローをきぼんぬ。

320:Super Combinator
02/07/21 14:00
>>316
竹内外史の本はかなり手ごわい。

321:317
02/07/21 14:04
最後にlogicとの関係だが、linear logicっていう「命題を使える回数」も
考慮した論理があって、linear typeも元々はそこから派生したそうな。

どんな論理かというと、よくある説明なんだが、
 命題P = 「あなたは120円を持っている」
 命題Q = 「コーラを買える」
 命題R = 「お茶を買える」
とおいて、Pと「PならばQ」と「PならばR」の3つが成り立っているとする。
すると、普通の論理ならPを2回ほど使って「QかつR」を結論できてしまうわけだが、
120円でコーラとお茶の両方が買えるってのはおかしいよな。

だから、そういう「使ったらなくなる」ものを考えに入れて、
「命題Pは一回しか使えない」みたいな性質も考慮できるようにした論理が
linear logicというわけだ。上の例だと、Qを結論することはできるし、
それとは別個にRを結論することもできるが、「QかつR」を同時に
結論することはできない。

322:317
02/07/21 14:11
と、これぐらい知っていれば、後はCleanを使ってみるなり、
上のほうのWadlerのチュートリアルを読んでみるのが
(linear logicの教科書を読破するよりは)手っ取り早いと
思うんだが、どう? もちろん、特定の目的じゃなくて
一般教養としてなら、linear logicの勉強もいいかもしれないけど。

もし英語が苦手だと最初は大変かもしれんが、この手の
(わりと)新しい話を少しでも突っ込んで調べようと思ったら、
何でも英語は避けて通れないと思われ。っていうか、下手な
日本語の解説よりも、上手な英語の説明のほうがわかりやすいかと。

323:Super Combinator
02/07/21 15:24
andとorに分配法則が成り立つのと成り立たないのと二種類ある、
それがlinear logic。>>321みたいなのを特にresource logicと呼ぶことがある。

324:317
02/07/21 15:39
ええと、323さんはなんでそんな風に思った?^^;
嘘を教わっているか、思い違いをしてそうなので、
例のInformation & Computationをのっとった、Girardの
オリジナルの論文を読むと吉かと思われ。

Girardの「しゃべる」英語は激しいフランス訛りで、
発表を聞いてても個人的に話をしても言ってることが
すげーわかりにくいが(笑)、上の論文はわりとわかりやすい。

325:覚え違いスマソ
02/07/21 15:43
誤: Information and Computation
正: Theoretical Computer Science

326:291
02/07/21 23:32
どうも291です。
みなさんの親切なレスが貰えてうれしいです。

>>319
論文読んでもlinear typeの構造が判ったような気がするというレベル
で止まっていました。なるほど。

linear type関連の論文て意外と少ないような気がしたので、そのバックにある
linear logicを勉強すればlinear typeのことが判るかな?という安易な動機しか
なんですけどね。
でも記号の操作のしかた忘れたなー。完璧に。

あとCleanですか?Downはしてますけど、使ったとき無いです。
うーんCleanも勉強すべきなのかな?

327:291
02/07/22 01:02
>大堀先生の「プログラミング言語の基礎理論」
この本は持っています。
読んでいますし、3割ぐらいは理解しているつもりです。
型推論も基礎となるアイデアも理解しているつもりです。

>上のほうのWadlerのチュートリアルを読んでみるのが
「Linear types can change the World!」は読んでいます
(20ページ程度の文書なら、英語でも読む気がするんですがね。)
でも、この論文は、317さんの解説のやつとは少し違うかな?

328:293,301
02/07/24 11:54
あ、論理カゼを吹かせてしまったのは自分だ。スマソ m(_ _)m

Wadler の解説に目を通してみました。World 型の
ような、捨てたり複製しちゃいけないとかいう値を
導入するための仕掛けが線形型ってことですね。

monad の解説 "Imperative functional programming"
の 4 節にある、評価順序を保証するためだけにある、
受け渡されるだけで値は運ばない変数 w を表面に
引っ張り出して活用する、という感じなのでしょうか。

↑これは激しく勘違いかも。

上の >>319 で説明されてるところは、Haskellコンパイラ
方面で研究されてる必須性解析やら更新回避解析やらを
プログラマが明示できる/しないといけない、と感じたん
ですが、どうでしょうか。


329:デフォルトの名無しさん
02/07/24 23:14
Cleanに関するページのようです。
Cleanってすごいですね。
URLリンク(sky.zero.ad.jp)

330:デフォルトの名無しさん
02/07/25 22:22
URLリンク(www.sysj.co.jp)

331:デフォルトの名無しさん
02/07/26 13:33
藁藁

332:デフォルトの名無しさん
02/07/26 18:49
>>329のサイト、ブラウザで画像もJavaScriptもOFFにしてたら、トップページから中に入れない。
しかたないからHTMLソース見てみたら…

><!--
>こういっちゃなんだけど、人のページのソースを見るのはどうかと思いますよ。
>そういう人は今後このサイトには来ないようにして下さい。ええ。
>-->

コワイヨー


333:332
02/07/26 18:59
あ、上の書き込みだけだと中傷にしか見えませんね。スマソ。
初心者の僕にはとても勉強になりました。つーか、大堀先生の本が読めなくて
ちょっとへこんでたんですけど、書評読んだらすこし元気が出てきました。
がんばるぞー。

334:デフォルトの名無しさん
02/07/26 19:22
>>333
わかんなければソース見てもいいと思うぞ。勉強になる。
あっちが見られる様な媒体で見られたくないものを置いている方が悪いんだから。

335:デフォルトの名無しさん
02/07/26 19:53
(゜д゜)<あらやだ!
URLリンク(www.amazon.co.jp)

未だ全部読んでないのに、
Haskell:the Craft of Functional Programming
の第三版が出ちゃった!

……と思ったら日付が、


336:デフォルトの名無しさん
02/07/26 20:04
スゲ〜

二度と見に行くかよ、と思わせるためにやってるとすれば、
とっても効果的だ。

337:デフォルトの名無しさん
02/07/27 00:35
>>335
俺も一瞬そう思った

338:デフォルトの名無しさん
02/07/27 00:49
age toku yo

339:デフォルトの名無しさん
02/07/27 01:15
<!--
すぐに出せるようにと思ったんで、
今後の更新予定とかをコメントでつけてましたが、
それらは全部削除しました。
まあ確かにそんなものをつけるべきではないのかもしれませんね。
-->

コメント変わった?
ここ読んでる?

340:デフォルトの名無しさん
02/07/27 01:35
>>329
の書き込みは要するに自作自演書き込みって事でしょ。


341:デフォルトの名無しさん
02/07/27 01:35
世間が狭いだけでは

342:デフォルトの名無しさん
02/07/27 09:03
>>339
削除した理由が、


「まあ確かにそんなものをつけるべきではないのかもしれませんね。」

誰かに注意を受けたと取るのが一番か。

343:デフォルトの名無しさん
02/07/27 09:34
書評も的を射ていないっぽ

344:デフォルトの名無しさん
02/07/27 14:07
スレ違い。

345:デフォルトの名無しさん
02/07/27 18:13
CLEANを紹介したのはエライが、
自作自演とか、偉そうにWeb作ってるのはイクナイ。

346:デフォルトの名無しさん
02/07/27 23:11
なぜ自作自演?
とか書くと、これも自作自演と勘違いされるのだろうか?

>偉そうにWeb作ってるのはイクナイ
作っている分だけ偉いです。
ヒガミはイケナイネ。

347:デフォルトの名無しさん
02/07/28 08:06
Cleanのページ作ってる奴はここを読んでるやうだな。
Cleanってば名前しか知らなかったので、ページ作ってくれたのは非常に
よろしいと思う。イイ。

だけど、自分の理解が怪しいこととかまで、無理して書いてないかの?
斜めにしか読んでないが、なんか外してるところがある気がちょっとする。
>>339とかもどうかと思われ。

348:デフォルトの名無しさん
02/07/28 08:29
Haskellの話をしよ〜ぜ。

349:デフォルトの名無しさん
02/07/29 00:25
Haskell がメインの開発言語になってる会社ってありますか?

350:デフォルトの名無しさん
02/07/29 08:46
>>349
Galois Connections
URLリンク(www.galconn.com)


351:デフォルトの名無しさん
02/07/29 10:31
もし、今後 Haskell 本とか書くヒトが居たら、是非

「本書の内容の正否・当否についての質問・意見は、明確で
具体的な理由をつけて、匿名ではなく、hoge@hoge.jp まで
お願いします。また、これら以外のことに関する本書への
批判・評論は刑法230条又は231条等に触れる恐れがあり
ますのであくまでも自己責任でお願い致します。」

とでも、表 2 カバー裏あたりに書いとけば良いかも :-)

352:デフォルトの名無しさん
02/07/29 10:38
>>351
なんだそれは。
Cleanのページ作った人ですか?
突っ込まれたから、ぼやいている?

Haskellのページとかschemeのページは前からあるけど、
だれも苦情は言わないし、ありがとうしか言わない・・ですが?

353:デフォルトの名無しさん
02/07/29 10:38
「本書の内容の正否・当否についての質問・意見は、明確で
具体的な理由をつけて、匿名ではなく、hoge@hoge.jp まで
お願いします。また、これら以外のことに関する著作者への
批判・評論は刑法230条又は231条等に触れる恐れがあり
ますのであくまでも自己責任でお願い致します。」

こうだな、正確には。

354:デフォルトの名無しさん
02/07/29 10:52
>>351
バイアスかけるのは止めてね
Haskellのスレだし。

355:デフォルトの名無しさん
02/07/29 11:30
>>351
おまえ私怨か?

356:デフォルトの名無しさん
02/07/29 13:33
>>351マンセー(ww

357:デフォルトの名無しさん
02/07/29 17:34
Haskeルン

358:デフォルトの名無しさん
02/07/29 20:55
ああ、DUAL!ってやつ?


359:デフォルトの名無しさん
02/07/29 23:02
?

360:デフォルトの名無しさん
02/07/30 18:13
>>352
ぼやきか・・・
それはもしかしたらイタイ発言ではなかろうか

361:332
02/07/30 20:28
なんか俺のカキコのせいで荒らされちゃってますね、スレの皆さんごめんなさい。
もう夏休みに入ってるって事をすっかり忘れてました。

362:デフォルトの名無しさん
02/07/31 00:54
>>361
お前のような万年厨も問題だがな

363:デフォルトの名無しさん
02/07/31 02:40
>>362
ハー。
人の振り見て・・・ということで。

364:デフォルトの名無しさん
02/07/31 17:02
>>363


365:石敢當
02/08/02 22:28
Haskell 98 Report が本になるみたいですね。

366:デフォルトの名無しさん
02/08/02 23:01
>>365
母さんソース

367:デフォルトの名無しさん
02/08/02 23:08
じゃ、誰かものすごい勢いで日本語版も
出版してくれよな。

368:デフォルトの名無しさん
02/08/03 08:55
気づいたら最初のスレが立ってから一年過ぎてる。
最初のころはHaskellスレ限定コテハンも何人かいて妙にまたーりとしていた
気がするのだが、最近廃れっぷりが激しいな。最初のころのような勢いも無いし。


懐 古 う ざ い











          よね。

すまん。逝ってくる。

369:デフォルトの名無しさん
02/08/03 09:25
ネタがないんじゃよー

誰かお遊びで作ったプログラムとか貼ってくれませんか?

370:デフォルトの名無しさん
02/08/03 15:03
関数型言語初心者です。

Haskellでクイックソートのコードを以前見かけて、こんなにシンプルになるのかと感動しました。

では、バブルソート(二重for文で大小比較の単純なやつ)はどうなるのでしょうか。
iとjを引数にして二重に再帰を繰り返し、takeやdropで切り貼りするしか無いのでしょうか?
もっと効率のいいやり方があるのでは、と思うのですが…

371:デフォルトの名無しさん
02/08/04 05:06
>>370
それらしいものを書いてみようとしたら
選択ソートとバブルソートが混ざったような中途半端なものになった。

bubbleSort :: Ord a => [a] -> [a]
bubbleSort xs = bs xs []

bs [] _ = []
bs [x] rest = x : bs rest []
bs (x1:x2:xs) rest = bs (min x1 x2 : xs) (max x1 x2 : rest)

つか効率を気にすればするほど選択ソートっぽくなると思う。

372:デフォルトの名無しさん
02/08/04 05:20
このスレってほとんどコード出てきてないのな。

373:デフォルトの名無しさん
02/08/04 07:27
Haskellは犬ですか?

374:デフォルトの名無しさん
02/08/04 13:54
Haskellerと言ってもその程度。

375:370
02/08/04 16:19
何故>>371でソートになるのか悩んで、紙に書いてようやく理解しました。
最小値を取り出して、それを x : bs rest [] で先頭に結合しているわけですか。

bs xs i j なんて関数を作って手続き型そのままにやろうとした俺とはえらい違いです。敬服。

376:370
02/08/07 22:54
数日間が空いてはっと気付く…

>>371のコードですと、要素数に比例してスタックを消費してしまいませんか?
(半端な知識ですが、末尾再帰になってなく見えます。書き直せないところが厨ですが…)

関数型言語の場合、スタック消費は気にしない方がいいのでしょうか。

377:デフォルトの名無しさん
02/08/10 10:05
>>376
関数型言語では基本データ構造のリストが再帰的(末尾再帰ではない)に
定義されているわけで、そもそもスタックを消費しまくることを前提に
作られているでしょうから、スタックの消費をあまり気にしなくていい言語と
して使えるはず。

Haskell のような遅延評価が基本の言語では、自然な再帰のアルゴリズムの
プログラムを、末尾再帰のアルゴリズムのプログラムに書き換えることも、
計算のオーダーが変わるようなもの以外は、あまり、気にすることはない
気がします。

378:デフォルトの名無しさん
02/08/10 11:42
よく関数型言語で Xs, とかYsってvariableなんだけど、なんでXsなの?
この最後のSはどっからでてきたの?X,Y,Z,W,Vとかでいいじゃん。
Sなんてつけなくても

379:デフォルトの名無しさん
02/08/10 12:14
x:xs
複数形のsです。

380:日曜Haskellerオヤジ
02/08/11 06:22
ものすごい久々です、
現在はプログラミング基礎論の勉強がてら一緒に Haskell もお勉強モードな土日です。

>>368
特に初心者がやるときには、英語を勉強しつつ Haskell の勉強もしようとすると
忙しくなりすぎて、とりわけ社会人だと極度のんびり勉強モードになってしまいます。
そうすると、どうしてもネタが尽き気味になりますよね、
和書の入門書がぜひとも欲しいところです。
大学院の学生さんたちの誰かが執筆してくれればいいんですが、だれか書きませんかね?
Haskell は離散数学とか圏論とかとセットにすると非常に面白い本ができると思うのですがどうでしょう?

あと、圏論の専門本も是非とも欲しいところですね、これも本当にない、
まったくと言って良いほど本がない、あっても絶版ばかりで手に入りません。
シュプリンガーフェアラーク出版の「代数学とは何か」に書かれてあるのが、
手に入りかつ、知っている範囲なのですが、
これは数学の専門書でプログラマには少々というかかなりの難解ぶりです。

自分がなんとか読めそうと感じられる範囲では、
ここ URLリンク(www.etl.go.jp)
にあるんですが、これも内容を充実して製本された本が欲しいところです。

初心者向きといえば、以前工科大のページがあったんですが
消滅してしまっているようです、越田センセまた何かページつくってくれないかな・・


381:デフォルトの名無しさん
02/08/11 07:14
プログラムはじめてやるのにラムダカルキュラスは難しすぎる

382:デフォルトの名無しさん
02/08/11 09:07
URLリンク(nicosia.is.s.u-tokyo.ac.jp)
はぎゃー先生のページ面白い

383:yuki
02/08/20 07:38
====================================================================

すみません。初心者なのですがこんな質問に誰か答えていただけるのでしょうか?

function type は
[Key] -> [Token] -> [(Field, Value)]

type Token = String
type Field = String
type Value = String
type Key = String

Key で Token を検索して、結果があればFieldとValueでOutput すると言う
ファンクションです。例えば、
[key] = ["Name","Title","Address"]

[Token]="Name",":","Yamada","Taroh",";","Title",":","Mr",";","Address",":","Tokyo","Shinjuku",";"]


output
[("Name","Yamada Taroh"),("Title","Mr"),("Address","Tokyo Shinjuku")]

になります。
TokenのArrayの中で、Fieldのあとは必ず ':', Valueのあとは ';'
になってます。それと、outputのfieldは単語ごとにスペースでくぎられた1つのstringになります。

誰か、アイデアでもいいので下さい。
すみません何分初心者なもので。 レスお待ちしてます。

=======================================================================

384:デフォルトの名無しさん
02/08/20 08:36
>>383
その区切り線には宗教的意味か何かでもあるのか?

385:デフォルトの名無しさん
02/08/20 09:14
>>383
宿題は自分でやりましょうね。

386:デフォルトの名無しさん
02/08/20 11:42
Haskellって、
学校の授業でどのくらい使われてるの?

387:日曜Haskellerオヤジ
02/08/20 12:50
宿題だとすると・・・そのまま答えを書いたらまずいかな(笑
私だったらこんな感じで作りますかね。

見ているとスペースのところで文字列が切断されていて非常に感じが悪いのでそれをまず結合します。
つづいてこの文字列リストから ":" , ";" を取り除いて出来上がり


388:日曜Haskellerオヤジ
02/08/20 12:52
おまけ
結合すべき文字列は直後が ";" ":" でないことに着目すると簡単に作れるでしょう。


389:383
02/08/20 12:55
「Haskell言語プログラミングレッスン <上> Haskell言語を始めよう」
「Haskell言語プログラミングレッスン <下> 関数型言語を始めよう」

出版準備です。

390:デフォルトの名無しさん
02/08/20 13:02
出版準備?大丈夫かよオイ

391:デフォルトの名無しさん
02/08/20 13:04
ネタだろ…

392:日曜Haskellerオヤジ
02/08/20 13:11
よく見てみると、単に複数文字列があるだけじゃなくて、
レコードみたいになっていますね ';' ':' ブラウザはの見分けがつかない
間違っているので上記2レスは無しということでお願いします

';' でいったん文字列リストのそのまたリストに分解して
先頭を順序対の左
上記を取り除いた上での、先頭と末尾を取り除いた文字列の結合を右の順序対として
リストを作ればよいみたいですね。


393:日曜Haskellerオヤジ
02/08/20 13:25
>>389
本当ならうれしいですね、ちょっと作ってみましょう、しばらくかかります。

394:デフォルトの名無しさん
02/08/20 13:27
個人的には関数の型が気にいらんな。

type Assoc = [(Field, Value)]
lookupAssoc :: [Key] -> Assoc -> Assoc

をつくれ、としたほうが抽象化のレベルがあうのでないか。まあ、

parseAssoc :: [Token] -> Assoc

をつくって

lookupTokens :: [Key] -> [Token] -> [(Field, Value)]
lookupTokens keys tokens = lookupAssoc keys (parseAssoc tokens)

とすれば元の題意にはあうだろうが。









次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5330日前に更新/199 KB
担当:undef