02/05/08 20:50
>>157
てひひひー。C#は全然把握してないッスー。
160:デフォルトの名無しさん
02/05/08 21:19
C#っていってももともとは.net frameworkのために作られた言語だからね。
シンタックスだけはJavaに似てるけど。逆に言語から仮想環境を想定するとしたら
どんなものになるんだろね。Hakell、というより関数型言語全般のために
作られたようなもの。あるとしたらどんなもんでしょ?
161:153
02/05/08 21:28
仮想環境ッスかー?何ッスかー?
162:デフォルトの名無しさん
02/05/09 01:26
Parallel Graph reduction Virtual Machine (PGVM) ?
163:134
02/05/09 01:31
>>135
>ストリームは「いくらでも長くなりうる列」というデータだ。
確かに漏れも、そう思います。ストリーム()
しかし、haskellのモデルではIO入出力はストリーム(ぎリスト)ではないですよね。
ということは結局、評価の順序が入出力に影響するはずですよね。
評価の順序を強制するためにモナドというものを利用しているんじゃないですかねー?
どうなんでしょ。
164:デフォルトの名無しさん
02/05/09 01:48
URLリンク(www.yfcbookshelf.com)
ここの下の所に「Programming Languages:Concepts and Constructs 2/E」
の「日本語訳版を期待」という文字が見えるんですが、今翻訳中なのでしょうか?
もしそうなら超期待!!
>>158
どうも効率面を問題にされているようですが、
私自身たいして関数型言語の経験はありませんが、
仕事の関係上感じている事です。
コンパイラ作ってると、この副作用がないというのが
結構オプティマイズに有効だったりするので、
結構これからの言語の核にすえるのは悪くないと最近思ってます。
計算の依存関係が明白でないと最近のスーパスカラーみたいに
命令スケジュールが必要だと面倒です。
全体的とはいわなくても部分的には関数型言語が高速化への寄与大きいと考えています。
計算機の並列度が上がってくると、少し考え方を変えてみるのも悪くはないと思っています。
ちなみにモナドはあんまり良くわかっていません。(TT)
だれか教えてくれー
165:デフォルトの名無しさん
02/05/09 02:25
>>163
昔のバージョンではストリームでI/OやってたんだよHaskellは。
I/Oエラーが扱いにくくってなあ…
モナドの方が楽だよ。
166:134
02/05/09 02:43
>>165
本当ですか?
何時の頃のモノなんでしょう?
処理系の名前とバージョンを教えてもらえませんか?
>I/Oエラーが扱いにくくってなあ…
>モナドの方が楽だよ。
たしかに、そうですね。
うーん、モナドから逃げてるのかなー?俺は
167:デフォルトの名無しさん
02/05/09 02:45
モナドを意味づける(動作を定義する)のにストリーム使えるしね。
168:デフォルトの名無しさん
02/05/09 02:46
副作用推進派のかた、もっと高階関数を活用してみては
どうでしょう?
関数も各引数を繋ぐための糊だと考えると
副作用が無いほうが嬉しいのでは?
169:158
02/05/09 02:50
>>164
効率は計算機上での実行の際のことです。
・・・・・・というか効率を考えた動作をガチガチにプログラマが記述する際に
場合によってはあるほうが便利ということですね。
一方、最適化のためのプログラムの解析においては
一般に副作用がないほうがやりやすいのは確かだと思います。
だからこそ代入を消してSSAなんて形式に落としたりもするんでしょうし。
170:158
02/05/09 02:51
>>168
行列を配列並みの高効率で実装できる方法があるなら是非そう致したいと。
171:158
02/05/09 02:54
引数で指されるオブジェクトがコピーのコストが気にならないほど小さいうちは
それほど悩ましくないんですが・・・・・・。
172:デフォルトの名無しさん
02/05/09 02:57
>>166
Haskell 1.1まではそういう仕様だった。全ての準拠処理系がそうなって
たはず。stream I/Oとcontinuation-based I/Oの両方が使えた。
URLリンク(www.haskell.org)
Monadic I/Oがあんまり便利なんで今は全部そっち。
173:デフォルトの名無しさん
02/05/09 03:04
>>170
配列使えばいいじゃん。副作用なしの。
SISALっていう関数型言語がそうやって、スーパーコンでも
Fortranに負けない性能出してたよ。
Fortran厨は他の言語が書けなかったので普及しなかったが。
174:デフォルトの名無しさん
02/05/09 08:17
なんかこのスレ人増えたな。
175:158
02/05/09 09:51
>>173
URLリンク(www.sys.uea.ac.uk)
を読んで見てるけど、やたら配列に特化した言語だなぁ。APLを思い出したよ。
サワリの部分を読んでの感想としては、
配列に特化した構文が多すぎるし、拡張性にも疑問が残る。
この言語を実装する上で研究された内容(解析や最適化の技術)は有益そうだが、
それをつかって書けと言われると結構苦痛かも。
CやFortranのソースに混ぜられると言われてもねぇ。
176:158
02/05/09 10:01
でついでに、「スーパーコンでも」というよりは
むしろ「スーパーコンのために」開発されたようだ。
スパコン以外にも移植はされているようだが、
どうもメインの技術ははデータ並列っぽい気配が。
もっと詳しく読んでみないと判らない部分もあるが、
そうなると今時のマシンの記憶階層と
マッチするかどうかは些か怪しげ。
177:Super Combinator
02/05/09 11:43
MonadとInfinite listの関係について知りたければ、
"Comprehending Monads", Philip Wadler読め。面白い。
178:デフォルトの名無しさん
02/05/09 13:23
>>176
文句の多いヤツだな。
179:デフォルトの名無しさん
02/05/09 15:07
>>158 は >>173 を「Sisal 使えば?」と読んでそうな感じだが
>>173 は「Haskell の副作用無しの配列使え」と言ってるのだろう。たぶん。
180:デフォルトの名無しさん
02/05/09 20:50
>>179
どんな実装してるんでソ。>「Haskell の副作用無しの配列使え」
私が読んだ何件かの「副作用なし配列」の論文は皆頑張っていたけどヤパ-リ
オーバーヘッドが大きくて生の配列ほどには早くない・・・・・・。
181:デフォルトの名無しさん
02/05/09 21:06
>>132
>Prologにカットオペレータ
カットオペレータ思い出した。これでProlog嫌いになった。
ところで、Prologも関数型かな? 副作用ないみたいだし。
真偽の2値のみを返すと考えられるかな。もっとも偽の値が
返ればストップするので真のみ返るが。
182:デフォルトの名無しさん
02/05/09 21:22
>>181
関数型じゃないね。論理型。
項の「値」を求めてるわけじゃない。
定理を満足する変数の値の組(代入)を求めている。
両方を組み合わせた関数論理型ってのもあるけど。
183:第5世代はどうなった
02/05/09 22:51
>>182
論理式の値を求めるのでなく、妥当な推論をするんだった。
unificationできなきゃ終わりという形式だったね。
Hugsのライブラリーに簡単なPrologあるね。
unificationなんかはもともとhaskellにあるから、
簡単に実装できるようだ。
そういえば、カットオペレーターもhaskellで実装
してたかな。
184:デフォルトの名無しさん
02/05/10 00:36
haskellは非正格言語だからデバッグし辛いのでは?
副作用がありまくる手続き型言語や正格言語ではデバッグで
苦労しない。というかデバッグしやすい。
非正格言語の優秀なデバッガって無いからね。
一つでもモデル(非正格言語のデバッガのね)が出来ればね。
185:デフォルトの名無しさん
02/05/10 03:55
Mondrianって言語がHaskellをコンパクトにして
OO対応にしたような言語で、.NETにも対応してるらしい
んだけど、この言語ってどうですか?
URLリンク(www.mondrian-script.org)
186:デフォルトの名無しさん
02/05/10 03:57
>>184
ていうか、副作用が無いってのはようするに
思わぬバグが混入しないようにする効果があるわけだから、
デバッグ以前にバグが混入しにくいのでは?
187:デフォルトの名無しさん
02/05/10 04:05
代わりに呼び出し関係が入り組んでくるからねぇ。>>186
やっぱ銀の弾丸はないもんだよねぇ。
188:デフォルトの名無しさん
02/05/12 02:28
>>186
でもバグが無くなる訳ではないでしょ?
仕様のバグという根絶不可能なバグがあるんだから。
やっぱデバッガ必要でしょ。
189:デフォルトの名無しさん
02/05/12 10:10
>>188
既存のデバッガ的な考えは合わないよね。
190:デフォルトの名無しさん
02/05/12 19:07
>>184
副作用がないので
Unit Test あたりが向いてるかも。
191:デフォルトの名無しさん
02/05/13 22:37
URLリンク(www.haskell.org)
のあたりだろうか。
192:デフォルトの名無しさん
02/05/13 22:39
>>188
仕様のバグとデバッガが関係あるんですか?
193:デフォルトの名無しさん
02/05/13 22:47
副作用が無いんだから、
コードの打ち間違いと理論にだけ気をつければ
やっていけます。
194:Super Combinator
02/05/13 22:57
>>192
帰納推論系の人たちで、
間違った具体例の指摘から仕様を直したり、
なんて事が流行ったよね?
そのengineのUI programはdebuggerと呼ばれることが多かった。
195:デフォルトの名無しさん
02/05/13 22:59
なんじゃそら
屁理屈か
196:デフォルトの名無しさん
02/05/14 16:02
つまり、従来のデバッガの役割は
非常に少なくなると言うことでいいのか?
197:デフォルトの名無しさん
02/05/15 00:14
デバッガの使い道ってバグを取るためだけの物かなー?
198:え?
02/05/15 00:35
デバッガをバグ取りに使わないの?
199:デフォルトの名無しさん
02/05/15 01:06
>>198
プログラミング言語の前に日本語を勉強尻。
200:え?
02/05/15 01:16
>>199
君こそ根。
201:デフォルトの名無しさん
02/05/15 01:24
Stream IOを勉強した頃は、同期関係の bugがあったら取り難そうだなあ、
とおもた。
Monadになったら改善できるのかしらん?
202:デフォルトの名無しさん
02/05/15 01:28
>>198 はすさまじいアフォ
203:デフォルトの名無しさん
02/05/15 01:28
>>201
並列処理の話?
204:え?
02/05/15 01:29
>>199 は、すさまじいエロ
205:デフォルトの名無しさん
02/05/15 01:38
>デバッガの使い道ってバグを取るためだけの物かなー?
他に使い道は?
206:デフォルトの名無しさん
02/05/15 02:30
>>204 ウザイ
「バグ取りの他に使う」と「バグ取りに使わない」の
区別もつかない糞は小1からやりなおせヴォケ
207:デフォルトの名無しさん
02/05/15 12:22
>>206
その前にお前は>>205の質問に答えろよ。
208:デフォルトの名無しさん
02/05/15 13:45
静的なプログラム検証ツールはデバッガの範疇に入るの?
こういうものが作りやすいのが関数型言語の特徴って言われてるから
そっちに期待しちゃうな。あくまで素人の考えだけど。
209:C厨房
02/05/15 14:01
lintはデバッガって言うか?
210:デフォルトの名無しさん
02/05/15 14:24
なんでHaskellスレは厨房がワラワラと寄ってくるんだろ。
無視できない何かがあるんですかねー。
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)
とすれば元の題意にはあうだろうが。
395:デフォルトの名無しさん
02/08/20 14:00
>>389
題名的には上下逆だろ。
396:日曜Haskellerオヤジ
02/08/20 15:52
関数型言語の素人のコードなので変かも知れませんが大体こんな感じになります。
本できたら、このスレッドに報告してくださいね、買います。
type Token = String
type Key = String
type Field = String
type Value = String
hoge_key = [ "Name" , "Title" , "Address" ]
hoge_token = [ "Name" , ":" , "Yamada" , "Taroh" , ";" , "Title" , ":" , "Mr" , ";" , "Address" , ":" , "Tokyo" , "Shinjuku" , ";" ]
-- ここが本体
func :: [Key] -> [Token] -> [(Field, Value)]
func k t = receive [] t
where
receive xcomplete remain
| remain == [] = xcomplete -- 全部完了
| nokey = receive xcomplete raw_recs -- キー無し
| otherwise = receive (rec:xcomplete) raw_recs -- 成功
where
-- 先頭レコードのその以外のレコードの定義
( raw_rec , raw_recs ) = sprit_records remain
-- キーと ':' と結合前の値のリスト定義
-- 必要ならコロンのチェックをすること
( key : ( colon : value_token ) ) = raw_rec
-- キーがあるかどうかの定義
nokey = (has_member k key) == False
-- 値の定義
value = cat_value value_token
-- 整形済みレコード
rec = ( key , value )
397:日曜Haskellerオヤジ
02/08/20 15:53
続きです
-- トークン分解と ';' の取り除き
-- 末尾 ';' チェックはしていないので必要なら無限再帰防止策をとること
sprit_records :: [Token] -> ( [Token] , [Token] )
sprit_records token = receive ( [] , token )
where
receive ( x , (y:ys) )
| y == ";" = ( x , ys )
| otherwise = receive ( x ++ [y] , ys )
-- 空白を入れながら文字列の結合をする
cat_value (x:xs) = receive x xs
where
receive complete remain
| remain == [] = complete
| otherwise = receive ( complete ++ " " ++ x ) xs
where
(x:xs) = remain
-- キー名があるかどうかチェック
has_member (key:keys) x
| x == key = True
| keys /= [] = has_member keys x
| otherwise = False
398:383
02/08/20 20:19
日曜Haskellerオヤジさん ありがとうございます。
なんか、本を出すことで盛り上がってるみたいなのですが。。
すみません、>389 は私ではないです。誰かがネタでやったみたいです。
なのに、期待して答えて頂いて感謝してます。
それと、すぐ宿題ってばれましたね(苦笑)。事実、海外でITを勉強してる学生です。
これはアサイメントで来週提出で7問中、1問だけとけてる状態です。そして、苦肉の策で
このスレに質問をしてみました。そして、みなさんにヒントを頂き感謝してます。
みなさんはかなりの知識をお持ちのようで、私なんてJAVAの教科は自分では得意だと
思ってやってましたが、haskelになると途端にややこしくなり、自分の頭の悪さを、思い知らされてます。
数学の知識がさらに必要となってきてますね。
日曜Haskellerオヤジ さん、参考になりました。ありがとうございます。
ついでにこのアサイメントの全容を貼っときました。(期待しつつ)。自分でやるつもりです。
海外は教科をパスするのがきついですね。
URLリンク(www7.big.or.jp)
また、質問があればさせていただいていいですか?
お礼のレス遅れてしまってすみません。なんか、私の使ってるプロバ、規制されてるんです。うー
だから、友人にメールで送って、それからレスしてもらってるので。すみません。荒らしではないですよ。
399:デフォルトの名無しさん
02/08/20 20:25
日曜オヤジさん、カコ(・∀・)イイ!!
400:デフォルトの名無しさん
02/08/21 09:00
>>383
hogehoge ks ts
= filter (\ (k,v) -> elem k ks) $ map hogera $ hoge ts
where
hoge [] = []
hoge ts = case break (";" ==) ts of
(_,[]) -> [ts]
(xs,_:ys) -> xs : hoge ys
hogera ls = case break (":" ==) ls of
(_,[]) -> (unwords ls, "")
(x,_:y) -> (unwords x, unwords y)
401:デフォルトの名無しさん
02/08/21 09:02
uge
402:日曜Haskellerオヤジ
02/08/21 22:12
>すみません、>389 は私ではないです。誰かがネタでやったみたいです。
やっぱりそうか(笑)
関数型は脳の回路がスイッチしないとやっぱり大変です、
普段の仕事では普通の言語を使っているので、土日に関数型に切り替えると毎週のように戸惑います。
JAVA 等で使われているオブジェクト指向的な考え方が頭の中に残っているとうまく組めません。
関数型プログラムのコツは写像を追うことと、
自分が欲しい結果を細部に分解しながら欲しいものを定義してゆくことだと思います。
しかし、これは考えても無駄で、なれるしかないです
>また、質問があればさせていただいていいですか?
どうぞ、このスレッドは最近ずっと寂れていたようですし、私が答えなくても
だれかが答えてくれると思いますし、私も書いてみます。
#ダウンロードしようと思いましたが、ファイルはもうアップローダーに残っていないみたいです。
403:デフォルトの名無しさん
02/08/22 03:18
まずfという関数があり、それはトークンの列を受け取って題意の処理を行うと仮定します。
1. 次の関数
g v [v1, ..., vn,":"]++xs=(v++" "++v1++" "++...++" "++vn,f xs)
を作りましょう。
2. gを使って関数fを定義します。関数fは、もしnがリストkに現れていたら
f [n,";",v1, ..., vn,":"]++xs = (n,v1++" "++...++" "++vn):f xs
そうじゃなかったらf xsを返します。fの定義はkのスコープの中で行われるものとします。
3. 最後に二つの関数をまとめてansを作りましょう。ansはキーのリストとトークンのリストをとり、
f,gを内部で定義してfにトークンのリストを渡します。
宿題の答えを書くのもアレなので、こういうかたちにしてみました。
404:デフォルトの名無しさん
02/08/22 03:23
>>403
> 2. gを使って関数fを定義します。関数fは、もしnがリストkに現れていたら
2. gを使って関数fを定義します。関数fは、もしnがキーのリストkに現れていたら
でした。舌足らずですた。
405:デフォルトの名無しさん
02/08/26 10:16
東大の「こ・何とか」って人は何人?
406:デフォルトの名無しさん
02/08/29 13:10
nisseicom.co.jp
407:日曜Haskellerオヤジ
02/08/30 00:01
>>403
ん、お盆休み明けてのぞいてみれば、だれもレスを付けていないのか・・・
今週末ちょっと考えて見ます。
408:日曜Haskellerオヤジ
02/08/31 17:37
やっと週末、必死こいて圏論勉強中の日曜Haskellerオヤジです。
ちょっと読んでみたんですが、正直題意が良くわからなかったです。
これはレスつけられないのでは、と思いました。
出題は、宿題のパターンでよいとは思います。ただし、宿題は自分の良心で自分でやりましょうね。(笑
ちなみに、引数に使ったラベルに意味説明を入れたほうが良いと思います。
いきなり v とか v1 とかで説明されてもわかりにくいです。
v1 v2 ... は入力トークンで、末尾は ":" です、
そのリストを [v1 , ... vn , ":" ] とします。
みたいな感じで書いた方がよいのではないかと感じました。
v はキー・・・・なんでしょうか?
あと、2については、 f の中に g が見当たりません。
( v ++ " "++v1++" "++...++" "++vn,f xs) = (n,v1++" "++...++" "++vn)
なんでしょうか?
409:デフォルトの名無しさん
02/08/31 17:43
正直ハスケルってどこで使うの?別に煽りじゃなくて、
どういうところで使われてるか不思議で。shcemeとかは
dr schemeのチュートリアルで結構仕事があるみたいなことを
書いてあったけど。
410:デフォルトの名無しさん
02/09/05 10:28
>>409
学校
411:デフォルトの名無しさん
02/09/07 12:25
>>410
(小)
412:デフォルトの名無しさん
02/09/07 12:25
>>400 kakoii! tuka hutuu dakedo, >>396-397 no ato ni miruto kakoii!
413:デフォルトの名無しさん
02/09/07 12:42
URLリンク(www.sampou.org)
そこでいう setter って x {foo = "chample"} みたいなのじゃないんすか?
data Foo = Coo { foo :: String, bar :: Integer} deriving Show
x = Coo { foo = "sample", bar = 12345 } -- 初期化
main = print x >> print (x {foo = "chample"})
と、こんなところで半年近くも前の話に質問をしてみるテスト。
414:デフォルトの名無しさん
02/09/07 13:11
>>413
君はこういう (URLリンク(www.bier-reise.com))
つもりなのかもしれんが、"チャンプル" でなく "チャンプルー" と伸ばすこともあり、
chample よりは champloo って書くべきものなのだよ。
415:デフォルトの名無しさん
02/09/07 15:41
>>352
なんだそれは。
416:デフォルトの名無しさん
02/09/07 23:10
ここらへんで一丁Haskellで
七行プログラミング part2
スレリンク(tech板)
に乱入して、関数型言語の恐ろしさを見せつけてやりませんか?
Haskellなら相当な事が出来そうですが(今↑ではやりのRLEとかも)
417:デフォルトの名無しさん
02/09/07 23:28
おまえがやって見ろよ
418:デフォルトの名無しさん
02/09/08 02:11
>>416
大して戦果をあげれないと思う。入出力とか弱いし。
Haskell 向きなのを何か考えればアレかもしれんが。
419:デフォルトの名無しさん
02/09/09 13:38
モナドパーサ
420:
02/09/18 03:35
421:デフォルトの名無しさん
02/09/18 06:54
7行プログラミングってPerlが一番凄そう。
422:デフォルトの名無しさん
02/09/18 16:41
むしろperlはそのための言語。
423:司馬乱
02/09/27 23:46
>>408
久しぶりにこのスレ覗いてみたら寂れてますねー.
コンピュータサイエンス向けの日本語の易しい圏論の本って需要あるのかな?
424:日曜Haskellerオヤジ
02/09/30 14:31
そーですねー、淋しいです。
>コンピュータサイエンス向けの日本語の易しい圏論の本って需要あるのかな?
取り合えず私にはあります、だれか作ってー
離散数学に興味を持ったところ、そのまま勢いでこれも面白くなってきています。
もっとも、一般位相はしらないわ、集合論はしらないわで大変ですが・・・
Haskell という言語はこういうものを勉強するときに便利ですね。
425:デフォルトの名無しさん
02/09/30 16:02
URLリンク(www.mail-archive.com)
426:石敢當
02/09/30 22:16
>>423
なぜコンピュータサイエンスに圏論なのか、圏論を勉強すると
プログラムを作成するにあたりどんな嬉しいことがあるのか、
などについて序章あたりに書かれているような本だったら買いたいです。
英語で書かれたのを1冊持っていますが、なかなか読み進めません。
ありがたみを実感できる章にたどり着けばはずみがつくと思うのですが・・。
427:デフォルトの名無しさん
02/09/30 22:58
>>426
その本とはなんでしょう?
さしつかえなければ教えてください。
428:デフォルトの名無しさん
02/09/30 23:17
圏論ですか、下の本で見たときがあります。
情報数学講座7 プログラム意味論 横内寛文 共立出版 1994.6
それにしてもプログラミング処理系は、実用的にするため色々な拡張が施され
ています。そのため純粋な数学との間には大きな溝が出来てしまってい
るような気がします。
429:デフォルトの名無しさん
02/10/01 00:43
これが圏論だっていうコードを見れば
分かるようになるかも。
430:デフォルトの名無しさん
02/10/01 23:00
Frege構造って何?
431:石敢當
02/10/02 01:07
>>427
Bird & de Moor の "Algebra of Programming" です。
432:司馬乱
02/10/02 01:08
コンピュータサイエンスの場合,圏論の代数的な面を強く出すよりは
論理や型理論と一緒にやる方がいいと思いますが(代数は等式論理なので)
どうやって動機付けするのがいいのかな.
圏論には多分
- プログラムの意味論を厳密に議論するための言葉を提供してくれる
- 様々なプログラミングのメタファーを提供してくれる
という二つの面があると思いますが,お互いに依存しあっているので
最後まで引っ張っていく書き方というのは結構challengingかも.
きちんと書くと今度は厚くなりそうだし.
433:司馬乱
02/10/02 01:27
>>431
たしかallegoryとか使っているやつですか?
434:石敢當
02/10/02 22:07
>>433
はい、そうです。
>>きちんと書くと今度は厚くなりそうだし.
執筆する側としては厚い本を書くのは大変だと思いますが、
読む側としては多少厚くても難解な薄い本よりはずっと
ありがたいです。もっとも、431の本をなかなか読み進めない
一番の理由は十分な間を取れていないからで、難解とか言う
以前の問題です。
435:デフォルトの名無しさん
02/10/02 22:17
>>432
というような会話を、約10年程前にしてたんですけど、
相変わらずそのスジでは必須科目(wなのですか?
436:デフォルトの名無しさん
02/10/02 22:34
多分、答えないと思うけど(w
437:日曜Haskellerオヤジ
02/10/04 00:02
>>429
圏論というのは、集合論の代わりになるもので、集合論が「要素」の論理
であるのに対して、圏論は「要素」と「要素」の間の関係の論理です。
集合論を置き換える為の物のようです。( 多分(^^; )
圏論って定義は分るんですけれど、その意味しているところは難解です、いまだに分りません。
しかも定義も注意深く定義を読まないと、いきなり変なところにはまり込んでしまいます。
私は ob(C) が「点」とか書かれていて最初こんがらがっていました。
ついでに射も最初はこんがらがってました。
#といいますか、全部だ・・・
もし分らないのが圏論の定義なら
しょうもない集合でいいので一個具体的に作ってみると少しづつ分ってきます。
たとえば { {false,true} , {0,1} } = ob(C) から出発して
全部作ってみるといいですよ。
#ちかごの感じるんですが
# 圏論 : 関数型
# 集合 : オブジェクト指向
#「点」が中心の時がよいのか「射」が中心の時がよいのか
#時々強烈に的確に記述できる関数型の特徴の正体が見えたような見えないような・・・
438:デフォルトの名無しさん
02/10/04 02:09
わたしの、数学から見たイメージでは、
集合論:構成的(実装を扱う)
圏論:公理的(インターフェースを扱う)
射の位相空間での実装は連続写像、群での実装は準同型写像って感じ。
インターフェースのみを使って記述すれば、そのインターフェースを
持っているどんな実装でも成り立つものを作ることができる。
また、インターフェースを前に出すことで、性質を明確に記述でき、
性質の比較ができる。
などのことが、圏論のメリットと感じます。
コンピュータサイエンスで圏論がどう使われているのかは知りませんが。
いや、数学でもあまり知らないんだけど。
439:デフォルトの名無しさん
02/10/09 23:28
>>423 >>432
もしかして書く気ですか?
440:デフォルトの名無しさん
02/10/14 04:00
Hugsって、そろそろバージョンアップしたりしないのかな。
テンキーの'/'が効かないのはなぜ?
441:日曜Haskellerオヤジ
02/10/15 22:08
越田一郎先生のページが復活していたので記念上げしておきます。
チュートリアルとしては最適と思います、私もこれを使っておぽえました。
URLリンク(www.teu.ac.jp)
442:デフォルトの名無しさん
02/10/28 04:33
寝られないので今さっき勉強始めてみました、あげ
443:デフォルトの名無しさん
02/10/28 05:04
Haskell ?
なにそれ?
444:デフォルトの名無しさん
02/10/28 05:09
>>443
若者向けのLisp
445:デフォルトの名無しさん
02/10/28 05:18
>>444
若者向けのLisp
446:デフォルトの名無しさん
02/10/28 09:38
prologの方がいいよ
447:デフォルトの名無しさん
02/10/28 09:47
んなわきゃねぇ(w
448:442
02/10/28 10:08
越田先生のチュートリアルいいよ。
公式のドキュメント読んでもいまいちだったけど、
これ読んだらけっこうすんなり入ってきました。
東京工科の学生には負けられません。
449:デフォルトの名無しさん
02/10/28 10:56
`ってどこ?っていうのがFAQかよ(藁
450:デフォルトの名無しさん
02/10/28 11:29
pの横にあるキーボードもありますけどね。
451:デフォルトの名無しさん
02/10/28 11:41
キーマップが違っててもすぐ分かるだろ
452:デフォルトの名無しさん
02/10/28 12:15
わからんキーはかたっぱしから押してみるのが近道だろうが
最近はヘタなキー押すとサスペンドしたりユーザー切り替わったりするらすいな。
なんでこれ以上ボタン増やしたがるのかわからんよ。
453:442
02/10/28 12:20
あのー、スレ違いなんですけど。。。
454:名無しさん@Emacs
02/10/29 18:38
越田先生の
fibStep :: (Integer, Integer) -> (Integer, Integer)
fibStep (u, v) = (v, u+v)
fibPair :: Int -> (Integer, Integer)
fibPair n
| n == 0 = (0, 1)
| otherwise = fibStep (fibPair (n-1))
nacchi :: Integer -> Integer
nacchi = fst . fibPair
このnacchi関数サイコー!
ところでIntegerは最高何桁まで扱えるんでしょうか?
nacchi 10000 ぐらいまでは余裕みたいですが。
455:デフォルトの名無しさん
02/10/29 18:45
(●
(略
456:名無しさん@Emacs
02/10/29 20:17
越田先生の10/9の再帰的関数と組の問題を解いたのだけど、
かなり汚いです。だれかスッキリした正解を教えて下さい。
maxOccursTwo :: Int -> Int -> (Int, Int)
maxOccursTwo a b
| a > b = (a, 1)
| a == b = (a, 2)
| otherwise = (b, 1)
maxThreeAux :: Int -> (Int, Int) -> (Int, Int)
maxThreeAux a (b, c)
| a == b = (a, c + 1)
| a > b = (a, 1)
| a < b = (b, c)
maxOccursThree :: Int -> Int -> Int -> (Int, Int)
maxOccursThree a b c =
maxThreeAux a (maxOccursTwo b c)
457:名無しさん@Emacs
02/10/29 21:25
越田先生の10/16の「リスト」の問題なんですが、
innerfunc :: Int -> Int -> [Int]
innerfunc num op
| op == 0 = []
| num `mod` op == 0 = innerfunc num (op-1) ++ [op]
| otherwise = innerfunc num (op-1)
divisors :: Int -> [Int]
divisors num
| num <= 0 = []
| otherwise = innerfunc num num
これでリストに要素を追加しようと思い":"を使おうと
思ったのですが、これの型はa -> [a] ->[a]
なので使うことができません。
[a] -> a ->[a]という型の関数はないんでしょうか?
[op]っていう書き方がなんとなくダサい気がします。
そういう関数は組込みであるんでしょうか?
というか組込み関数一覧みたいなのってどっかにありません?
458:名無しさん@Emacs
02/10/29 21:47
divisors関数を使った素数判定はこうかな?
isPrime :: Int -> Bool
isPrime num
| num <= 2 = False
| length (divisors num) > 2 = False
| otherwise = True
なんとなくHaskellが楽しくなってきました。
東京工科大のやつらがうらやましひです。。。
早くIO使った実用的アプリを作れるところまでいきたいのぉ
459:名無しさん@Emacs
02/10/29 22:27
型変換するよい方法はないでしょうか?
hugs上で
>:type "abc"
"abc" :: String
>:type ["abc"]
["abc"] :: [[Char]]
となってしまいます。本当は[String]となって欲しいわけですが、
Charのリストのリストになってしまうんですね。
どうしてなんでしょう? そこで、
>:type ["abc"::String]とかやってみてもダメですね。[[Char]]になります。
:type 1::Intならうまくいくんですが。。。
460:デフォルトの名無しさん
02/10/29 22:47
String は [Char] の別名だから。
URLリンク(www.haskell.org)
↑を見てみればわかるように言語仕様で
type String = [Char]
というセマンティクスが規定されてる.
461:名無しさん@Emacs
02/10/30 00:05
>>761 ありがとうございます。
CharとStringの扱いですが、なかなか難しいですね。
おなじくhugs上で
>("aaa","b") == ("aaa", 'b')
というのはもちろんエラーになるわけですが、
Stringとなって欲しいようなところで[Char]と評価されて
しまうので。。。
チュートリアルの図書館データベースの問題で、
type Person = String
type Book = String
type Record = (Person, Book)
-- 図書の返却を行う関数
isData :: Record -> Record -> Bool
isData record1 record2
= record1 /= record2
returnLoan :: Database -> Person -> Book -> Database
returnLoan remove_person remove_book
= [ record | record <- exampleBase, isData record (remove_person, remove_book)]
これだと
ERROR "library.hs":54 - Type error in application
*** Expression : isData record (remove_person,remove_book)
*** Term : (remove_person,remove_book)
*** Type : ([([Char],[Char])],[Char])
*** Does not match : ([Char],[Char])
というエラーが出ます。んー、わからんです。
462:名無しさん@Emacs
02/10/30 00:06
s/761/460/
でした。すんません。
463:名無しさん@Emacs
02/10/30 00:10
×returnLoan remove_person remove_book
○returnLoan exampleBase remove_person remove_book
でした。質問忘れてください。m( )m
464:名無しさん@Emacs
02/10/30 01:06
それでもあれですね。思ったより簡単ですね。
もっとCやPerlと比べて難しいかと思っていたら
そうでもなかった。二日である程度慣れました。
ループを一切使わずに全て再帰で書くのは
なれないうちはしんどそうだけど、見返りとして
バグの出にくいプログラムになるのかな。
これがすらすら書けるようになったら
この言語で仕事してみたいですね。
手っ取り早くHaskellを活用できる分野というと
XMLの処理系でしょうか。
Haskellについてはまだよくは分っていませんが(藁)
他の言語より向いている気がするんですね。
もっとフォーマルなプログラムにおいてこそ
こういった言語は意味をなすのかもしれないけど、
多分そういうのはヘタレには無理だろうし(w
とりあえず、IO、スレッドが使えるまで基礎勉強ですね。
無料で使わせてもらっていて、講義より先に
問題に関する質問をここに書いてしまっては
先生に申し訳ないのでここらへんでやめにしておきます。
先生には入門者用の本を書いてほしいなあ。
465:デフォルトの名無しさん
02/10/30 01:31
>>464
IBMのdeveloperWorksサイトに、HaskellでXMLを云々って記事が有ったね。
既出だろうけど。
466:名無しさん@Emacs
02/10/30 01:47
>>465
なるほど、それでかな。
Haskellを使ってみる前からXMLの処理には
関数型言語が向いている気がしてたんです。
ただ単に自分が以前DWを読んだだけだったのですね(汗
関数型言語初体験の感想としてなんですが、
JavaやC++ではいかようにも書けてしまうのが
むしろあまりよくないことに思えてきました。
アルゴリズムを素直に表現してそれがそのまま
プログラムになっているという。素晴らしいです。
久しぶりに萌え萌えです。
もっと綺麗に書けるよう努力せないかんですね。
467:名無しさん@Emacs
02/10/30 07:49
朝起きてから、Haskellスレパート1を見てたのですが、
2chに神が君臨したかのようなレベルですね(汗
自分の書き込みが恥かしくなって来たのでしばらく潜伏します。
早くみなさんのレベルに追いつきたひ。。。
これだけじゃ情報価値なしなのでせめてリンク
純粋遅延関数型言語 Concurrent Clean
URLリンク(sky.zero.ad.jp)
このサイトの書評は私のような初心者には参考になりそうです。
また管理者の人はCleanシステムのドキュメントの翻訳を精力的に
行われています。素晴らしいです。
468:デフォルトの名無しさん
02/10/31 21:02
英語サイトで東工大くらいの難易度のチュートリアルってあります?
469:デフォルトの名無しさん
02/10/31 21:19
ゲージンはいきなりGentle~を読んでコード書き出すの?
なんか信じられないんだけど、あれより簡単なドキュメントって
英語じゃみたことないよ。
470:468
02/10/31 21:31
>>469
情報どうもです。
テーマごとに手ごろな課題がついてて段階的に
ステップアップできるようなのがいいんですが。
もうちょっと探してみます。
471:デフォルトの名無しさん
02/11/02 09:19
これってまじですか?
URLリンク(research.microsoft.com)
というかAlexandrescuに触発されたとか。。
472:デフォルトの名無しさん
02/11/02 11:51
>>464
関数型言語でXMLを扱う例としてこんなのがあります。
URLリンク(xduce.sourceforge.net)
メインの開発者は日本人です。
実装はHaskellじゃなくてMLだけど。
473:デフォルトの名無しさん
02/11/02 15:15
Haskell.NETはどうなりますたか?
474:デフォルトの名無しさん
02/11/03 11:45
classって使ってます?
ghcのソースコード見ても殆ど使ってないんだけど、、、
C++がめんどくさくなるとという理由から敬遠されるのと
同じような理由で型クラスも使われてないとか?
475:460
02/11/04 11:04
URLリンク(www.haskell.org)
(6.3 Standard Haskell Classes)の図にある如く
言語仕様で定義されてる基本型からして使いまくりですが? >>474
476:デフォルトの名無しさん
02/11/07 21:28
>>471
う
477:デフォルトの名無しさん
02/11/07 21:57
I/Oとかの副作用処理って、モナドがファイナルアンサーですか?
他に良い方法無いの?(Haskell固有の話じゃなくて)
478:デフォルトの名無しさん
02/11/07 23:30
自分で考えろ
479:名無しさん@Meadow
02/11/07 23:44
スレリンク(tech板:717番)
480:デフォルトの名無しさん
02/11/10 23:22
ユニークな型ねー。
これだけで解決?
>>478
あなたも一緒に考えましょうよ。
481:デフォルトの名無しさん
02/11/10 23:43
他にもあるよ。
・lazyなストリームとみなす。
・continuationを使う。
482:デフォルトの名無しさん
02/11/11 01:28
そもそもLazyなのがいけないんだろ
483:デフォルトの名無しさん
02/11/11 16:00
このスレ相変わらずプログラムコード量が著しく少ないねぇ
484:480
02/11/12 03:32
>>481
その2つの方法もありますね。
でも古典的(あまり普及できない)方法なのでは?
485:名無しさん@Meadow
02/11/12 12:55
>>482
> そもそもLazyなのがいけないんだろ
‥‥‥誰もつっこまないのか。
っつうかオレ釣られた?
486:デフォルトの名無しさん
02/11/13 15:44
面倒なんで突っ込む必要なし
487: ◆y3A2MadQ16
02/11/14 05:57
苦労の割にありがたみが少ないということかもね…。
嫌いじゃないんだけど、導入の旨みが苦労に勝っていると証明できないんで、
最近はLazyにも個人的に放置気味…。>Lazy Evaluation
代わりにという訳でもないが最近は部分評価野郎になってまつ。
(その上、HaskellどころかJava野郎に成り下がってまつ(w。)
488:デフォルトの名無しさん
02/11/17 23:10
ガイシュツな話題。
Lazyが悪い訳じゃないのに・・・・
>>477
他にも色々なアンサーがありますよ。時制理論とね。
透明参照性を保つためには、時間とか状況とかを導入すれば良い。
489:デフォルトの名無しさん
02/11/18 10:18
効率性の問題に行き当たる
490:デフォルトの名無しさん
02/11/19 11:00
>>488
もちろん悪くはないんだ。漏れも個人的には好きだ。
ただ好みの問題を越えて、
実装の苦労と実行効率を補ってなお十分にいいと言い得るかが問題…。
491:デフォルトの名無しさん
02/11/19 23:09
>>489 >>490
実行速度も、もちろん気になるので言語に新しい要素を導入するときは
慎重にするべきですね。
でも構文で制限かければ良いような
もしくは処理系のanalysisによる最適化(正格性判断による末尾再帰とかね)
とかで何とかなりそうな気もします。
だれか何とかして。
492:デフォルトの名無しさん
02/11/20 16:59
Hugs98 November 2002 release
URLリンク(haskell.org)
493:デフォルトの名無しさん
02/11/20 17:04
November 2002 release (November 19, 2002)
We are pleased to announce a new major release of Hugs98. The most important features of this release are:
・ Much improved FFI support (contributed by Alastair Reid), bringing Hugs really very close to the Haskell
FFI specification.
・ Adoption of a significant subset of GHC's hierarchical libraries (contributed by Ross Paterson).
・ An (allegedly) complete implementation of the Haskell98 module system (Sigbjorn Finne).
Most reported bugs have also been fixed; however, some issues still remain. See Hugs Bugs & Features for
further information.
494:デフォルトの名無しさん
02/11/20 18:40
随分とでかくなったな・・・
495:デフォルトの名無しさん
02/11/21 15:25
>>440
バージョンアップしてもテンキーの"/"は効かないままな模様(Winhugs on W2k)
つーか日本語キーボードじゃないと再現しなくて
開発元は気づいてないなんてオチじゃないだろうな。
英語キーボード持ちの人だれか試してプリーズ。
496:デフォルトの名無しさん
02/11/22 01:10
>>495
漏れは英語キーボードだが。
日本語OSでしか再現しないのか?
497:495
02/11/22 21:57
>>496
英語KBでも効かないか。
ウチにゃ日本語W2kしかないから、英語OSの検証は無理だし。
もうちっと色々してみてダメだったらバグレポするつもり。
498:デフォルトの名無しさん
02/11/26 09:05
新しいHugs、なんかインストーラがおかしくない?
アクセス権の設定とか。
499:デフォルトの名無しさん
02/12/02 00:14
誰か、
lispとhaskellとocamlの
メリットデメリットを教えてください。
500:デフォルトの名無しさん
02/12/02 00:31
500get
501:デフォルトの名無しさん
02/12/02 00:41
501got!
502:デフォルトの名無しさん
02/12/02 04:55
新しいhugsにはwinhugsはついてないの?
503:デフォルトの名無しさん
02/12/02 20:57
越田先生の「値しての関数」と「オーバーロードとクラス」の問題が
全然分からない・・・。
誰かお助けを~
504:デフォルトの名無しさん
02/12/04 11:46
(´-`).。oO(tab-width 4文字にしててはまった。あー悩んだ悩んだ。do で。)
505:デフォルトの名無しさん
02/12/05 00:49
GHC 5.04.2 Released
URLリンク(www.haskell.org)
506:デフォルトの名無しさん
02/12/05 01:40
HaskellはMS Research所属の人間が関わっているのに、
UNIX指向なんでつか?
507:デフォルトの名無しさん
02/12/05 02:41
さあ
508:506
02/12/05 10:28
「GHCは」、だった。
509:デフォルトの名無しさん
02/12/06 09:11
ネタ?
もともとグラスゴ大のプロジェクトで,
大学の研究者を MSR が引っこ抜いてきて,
継続してる研究だからってかんじか.
ってゆ~か MSR ってマジで全く何の要求も
されない,ってウワサっすけど,本当?
個人的に一番参照してるサイモン博士の頁は↓だったりするが.
URLリンク(research.microsoft.com)
510:デフォルトの名無しさん
02/12/06 14:02
いや、GHCの最新版で一番最初に出るのがUNIX版なもんで
511:デフォルトの名無しさん
02/12/07 10:04
え,ソースは CVS でいつでも最新だよ? とかボケてみる(w
URLリンク(www*haskell.org)
彼らが常用してる開発環境が↑の Windows ビルド用環境ではない,
というだけかな,と.
512:デフォルトの名無しさん
02/12/11 20:50
>502
>新しいhugsにはwinhugsはついてないの?
オレも見つけられない。どこにあるの?
513:デフォルトの名無しさん
02/12/14 15:59
URLリンク(www.haskell.org)
>Emacs in Haskell の計画
これはネタですか?こんなことやってる人いるのかな?
514:デフォルトの名無しさん
02/12/16 06:01
URLリンク(www.haskell.org)
↑これのどこが面白いのか、誰かひとつ解説してくれ。
515:デフォルトの名無しさん
02/12/20 16:48
その面白さを理解できないあなたはHaskellerではなし。
無理にでも笑いなさい。
516:デフォルトの名無しさん
02/12/22 11:30
URLリンク(yzg.3nopage.com)
質問なんですが、これってなんていう本だか分かりますか?
おそらく、Haskell:the Craft of Functional Programmingの和訳だと思われるのですが……
検索しても出てこないもので……
517:デフォルトの名無しさん
02/12/24 10:15
>>516 何処ぞの大学か何かの授業用のテキストじゃないかなぁ.
前の年には毎回配ってたプリントを,次の年は一括して印刷・
簡易製本とかいうパターンって結構あるから
518:デフォルトの名無しさん
03/01/06 23:34
んが
519:IP記録実験
03/01/08 21:43
IP記録実験
スレリンク(accuse板)
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
520:デフォルトの名無しさん
03/01/09 02:32
IP記録するのはいいけど串も規制しないと意味ないよな
521:デフォルトの名無しさん
03/01/09 03:16
フシアナ標準にすればいいのに。
困るのは厨くらいだろ?
522:デフォルトの名無しさん
03/01/09 03:58
>>292
どのIPがどの垢かは、ISPが記録してます。
だから、悪い事すればモデムだろとADSLだろうと捕まりますよ。
523:ぶん
03/01/09 14:08
始めまして。今私はplorogの勉強をしています。問題集に並べ替えのプログラムがあったのですが、よくわからないのでどなたか教えて下さい。
concatenate([],List,List).
concatenate([Head | This Tail],List,[Head | That Tail]):-
concatenate(This Tail,List,That Tail).
sort([],[]).
sort([Head|[]],[Head]).
sort([Head|[THead|[]]],Result):-
Head <= THead, concatenate([Head],[THead],Result).
sort([Head|[THead|[]]],Result):-
Head > THead, concatenate([THead],[Head],Result).
sort([First|[second|Tail]],Result):-
First <= Second,
concatenate([Second],Tail,Temp),
[First|RTail]=Result,
sort(Temp,RTail).
sort([First|[second|Tail]],Result):-
First>second,
concatenate([First],Tail,Temp),
[Second|RTail]=Result,
sort(Temp,RTail).
それで、これをどう繰り返せばいいのかがわからないのです。何かわかる人がいたら教えて下さい。
524:デフォルトの名無しさん
03/01/09 14:21
これからは馬鹿って書いただけで訴えられる可能性がでてきたわけで
525:デフォルトの名無しさん
03/01/09 15:05
既に訴えられているわけだが。ひろゆきが責任を取ってるだけで。