shelarcy:log
- (2004/04/11 07:22:19 PDT): nobsun のところの Haskell のための Wiki の InterWikiName はどうつけるべきかという問題に時々悩まされる。nobsun のところでは Haskell で良いだろうけど、WiLiKi からだと本家の HaWiki と混同されてしまう恐れがあるのではないか本家の方から示すときにどうあるべきかという問題を考えてしまいます……。
- これはおそらく考えすぎでしょう。 InterWikiName つきの名前が一つの名前と見なされることを考えると、Haskell:naninaniという名前で参照した方が適切でわざわざこった名前をつけるというのはナンセンスでしょう。HaWiKi 本家からは別途 Haskell_JP みたいな感じで……こうしておきます。何か意見があれば、書き込んでください。
ユーザーインターフェースに対する関心
- Jef Raskin
- satoru:バッドノウハウ
- satoru Wiki 消滅により、バッドノウハウの集積場も消滅
POBox のモデルにはまだ改善の余地あり、と。
プログラミング技術的に対する関心
- GUI フレームワークの作り方について Widestudio とは別の方向を志向するようになってしまったので、あちらはおろそかになっています。
- 少し前までは C++ を関数型にどんどん近づけてやるという志があったのですが、 Scheme や Haskell を学べば学ぶほど、やってられなくなってしまって……
Gauche + wxHaskell
(2004/06/01 05:51:32 PDT): cygwin で signal が動かないせいで Kahua が動かせないのと、gtk が cygwin でまだ動きそうにないのと、静的な部分を Haskell で作って Scheme インタプリタが動作する環境があったら素敵だなと思い、口だけではなくなんとかならないかと様子を探ってみる。
- Gauche:Windows/VC++ って結局あそこにあった、patch を当てた気配がないような……。
- GHG:shelarcy に書いたように autotools 関係に疎いので、あのあたりのリファレンスがないと辛いものがあるけど、他にやりそうな人がいなそう……。
- Boost 1.31 の Boost.Build v2 で VC 7.1 が動いてくれない。再インストールして不具合は追放したつもりだったんですが、これもうちだけでしょうか?
- mingw だと boost::thread が動いてくれないし…… cvs から適度な時のものを取ってきてくれというのを要求するのは酷だ……。
- STLport は使わない方針で。
- Shiro (2004/06/01 06:30:34 PDT): 私が個人でWin上の開発環境を持っていないんで、
当てても検証ができないのです。ただ、教育用に使うのにWin nativeなのが欲しい
という要望があるので、時間と予算の都合がつけば何とかしたくはあるんですが。
やるならmingwかなあ。
- shelarcy (2004/06/01 07:02:44 PDT): とりあえず期待に添えるだけの腕があれば、半ボランティアでやるから予算の方はまかせてくださいって言えるんですけど……へぼへぼなので。 patch は VC のプロジェクトファイルを用意している感じですが、とりあえず VC のプロジェクトファイルのものと thread がきちんと動かないのを覚悟の上の boost + mingw 両方を用意するという感じでやっていきたいと思います。
- 問題は依存関係の把握が…… とりあえず configure かけたものを見ていくしかないのかな?
- Shiro(2004/07/29 06:34:44 PDT): 個人的な意見なんですが、autotools、特にautoconfを
ちゃんと使うには、bourne shellがある程度使いこなせることが大前提だと思います。
もちろん、単にバインディングを作るだけならexamples/spigot/* あたりの
ファイルをコピーしてちょいちょいっと変えればいいんで、そんなに深く
知る必要は無いでしょう。でも「autotoolsを勉強したい」のなら、
生成されるconfigureスクリプトは読めないとまずいと思います。
(configureスクリプトが読めないと、トラブった時にわけがわからなくて、
autoconfステ、みたいになるんじゃないかと…)。
更に、automakeを使うならmakefileもちゃんと読めないときついです。
bourne shellはUnixリテラシーの一部みたいなものなんで、この機会に
身につけてもよろしいのでは? 私はKernighan/PikeのThe Unix Programming
Enviornmentで勉強しました。ちと古いんですが。
- shelarcy(2004/07/29 20:39:09 PDT): 自分にとって必要なくらいと言うとどのくらい勉強したらいいのか分かりませんが、そういうのを含めて一度きちんと勉強したら参考になるかなと思っているので、bourne shell もきちんと勉強してみようと思います。GHC の処理はそこそこ抽象化してくれるので automake に頼ることはないだろうと思うのでそれは放っておきますが、make は様々な場面で出てくるので読んで書けるぐらいにはなっておこうと思います。
Code Generation
と一応つけておくものの、WiLiKi なのでマクロの話題です。
(2003/07/19 03:45:07 PDT): Paul Graham から許可を得たということで、まだ途中ですが On Lisp 邦訳版 が公開されています。今はようやく Haskell の本を読んでいるので、後で読むことにします。
- (2003/10/23 20:21:31 PDT): 翻訳されているところまでは読みました。
(2004/03/17 05:15:41 PST): 昨日、何度かほったらかしにしていた Scheme の hygiene マクロについて、ようはパターンマッチだと思うことでようやく理解できました。Haskell の 悪名高い「やさしい Haskell 入門」も、 SICP や OCaml の入門記事を一通り読んでいた私にはすんなり理解できたけど、他の人からはよく難しいという話を聞くように、何らかのバックグラウンドの代わりになる説明が必要なのかもしれませんね。
(2004/04/09 06:13:46 PDT): Ruby 論者の言うマクロ不要論と generator 的なブロックを持つために出てくる bliki_ja:DomainSpecificLanguage (言語内DSL)の記述の対比は興味深いものに思えます。
OS を書くとき
(2003/11/14 01:44:59 PST): 時々出てくる気になる話題。誰でも自分の好きな言語で書きたいと思うからそれは置いとくとして、関数型言語で OS を書くメリット、デメリットは何でしょうか?
- OS の高度な変更が動的に可能というのが考えられますが、動的言語であれば構わないので関数型のメリットではないような気がします。静的言語でもインタラクティブな処理系の上に築くのが普通でしょうから、そういう場合には堅固な型チェックと合わせてメリットがあると言えそう。
- 型チェックと、自動検証の可能性?
- (2003/11/15 23:01:44 PST): 型チェックを応用した自動検証は確かに魅力的ですが、やりすぎると肝心な部分で応用が利かなくなるので注意が必要です。
- 継続処理である Reactive Programming との相性が良い。
関数プログラミングは難しいか?
Matzにっき [OOP: 2003年]より
ここの話だけ読んでいると Haskell がオブジェクト指向言語に見えてくるのが不思議。もっとも、世間的にはこれをオブジェクト指向とは言いませんが……。
- (2003/11/08 08:27:22 PST): 短期間しか勉強していなかった OCaml を久し振りに復習してみて、疲れました。variant 型でしか再帰定義ないため、どうやら ML 系の言語では、通常の関数の再帰ではない再帰的な型を生み出してしまうようなものは(遅延(lazy)ではなく正格(strict)であることによる無限ループの発生を抜きにしても)定義できないようですね。
- (2003/11/11 16:08:30 PST): これは勘違いで strict であることが問題だったのかもしれません。(SML では必要ないのに、OCaml では再帰関数に rec の指定が必要というところで読み違えてしまったっぽい感じです。) もしそれ以外のケースで上記の制限にはまるために定義できないものがあったら、教えてください。
- これに加えて Haskell や Clean には型クラスがあるため、十分にオブジェクト指向としての用件を満たしているように見えてしまうと。(Monad の魅力は型クラスを抜きにしてありえないわけですし……) 他でオブジェクト指向技術を取り入れるのが魅力を持つのに対し、 O'Haskell や Clean の existential types (存在(量化)型。Exist な type。forall は universal type)があんまり魅力的に見えないのは、やっぱりそのためなんでしょうね。
- (2004/01/06 20:47:27 PST): 数理論理学にちょっと触れて、ああ rank n polymorphism ってそういうこと、という風に納得。価値を分かる形で実例として見せられたりしないと多様な型の可能性の追及の価値は分からないので、今の GHC や Hugs のドキュメントのような分かる人には分かるという感じのドキュメントだと辛いですね。コード削減と制約に対する飽くなき追求があるのは分かるのですが……
- SML の型の再起定義ができないという話もなんとなく見えてきたのですが、今ひとつ。
- とりあえずここまで。ここから先は Haskell:shelarcy あたりに書いた方がふさわしそうですので。
上の話題に触発されてページを作ってみようと思うものの、「関数型は難しいか?」などのタイトルの方がいいかな、とちょっと迷っています。
- 他で何度も繰り返されているので、普通に書いても面白くない。(中には「本物のプログラマはどんな言語でも関数プログラミングをやる」という愉快な文章もありますが……)
- 実体験として、関数プログラミングに触れる事で数学が分かりやすくなったというのがあります。数学の教育に関数プログラミングは役立つだろうか?
- (2004/04/23 06:00:11 PDT): 言語がどうではなく、現在の状況が問題です
疑問
(2003/06/05 20:57:37 PDT) neat sxml の関数化
neat sxml の
`(table
(@ (border "1"))
,@(nsx->sxml
`((tr (td 0)(td 1)(td 2)(td 3)(td 4)
(td 5)(td 6)(td 7)(td 8)(td 9))
,qwerty-list)))
この部分を使いまわしたいのですが、Sxmlcnv 用の関数としてうまく定義できません。quote に関して何か見落としがあるのかな?
- Shiro: 別に変なところは見当たりませんが、どういう問題が出ましたか。
- shelarcy: コードと実行環境が今手元にないのでエラーが示せませんが、確か以下のようなコードを書いたとき、quote を色々と変えてもエラーが出てました。(gauche0.6.7.1, sxmlcnv-0.0.4, cygwin)
(define M:table qwerty-list
`(table
(@ (border "1"))
,@(nsx->sxml
`((tr (td 0)(td 1)(td 2)(td 3)(td 4)
(td 5)(td 6)(td 7)(td 8)(td 9))
,qwerty-list))))
(define (L:body)
`(body
,(M:table
'(("1" "2" "3" "4" "5" "6" "7" "8" "9" "0")
("q" "w" "e" "r" "t" "y" "u" "i" "o" "p")
("a" "s" "d" "f" "g" "h" "j" "k" "l" ";")
("z" "x" "c" "v" "b" "n" "m" "," "." "/")))
))
- shelarcy: sxmlcnv や slib あたりで syntax-error がでます。body 内部に書いて M:table ではなく qwerty-list を使い回す場合には何も問題が発生しないので、 quote の使い方を間違えたのかなと思ったのですが……
- Shiro: どんなエラーですか。ちなみに上のコードのM:table
の定義は、(define (M:table querty-list) ...) のtypoですよね?
- shelarcy: すみません。さまざまなところで typo しまくってました。(本題にしたかったものはネストが間違っていましたし……)道理で見当違いのエラーがでるわけですね。ありがとうございました。
Last modified : 2012/03/18 10:53:11 UTC