Gauche > Archives > 2014/09/10

2014/09/10 02:31:20 UTC齊藤
#
ありゃ、なんだか vector-for-each の挙動がおかしいような。
#
gosh[r7rs.user]> (vector-for-each (lambda a (display a)(newline)) '#(3 4 5) '#(1 2))
(#(#(3 4 5) 0) #(#(1 2) 0))
(#(#(3 4 5) 1) #(#(1 2) 1))
#t
#
R7RS でも SRFI-43 でもない変な挙動?
2014/09/10 02:35:37 UTCshiro
#
ぐは。複数引数をテストしてなかった模様
#
diff --git a/lib/gauche/vecutil.scm b/lib/gauche/vecutil.scm
index eba7ff1..4568f91 100644
--- a/lib/gauche/vecutil.scm
+++ b/lib/gauche/vecutil.scm
@@ -88,7 +88,7 @@
     (dotimes [i (vector-length vec)] (proc (vector-ref vec i)))
     (let1 vecs (cons vec more)
       (dotimes [i (apply min (map vector-length vecs))]
-        (apply proc (map (^v (vector v i)) vecs))))))
+        (apply proc (map (^v (vector-ref v i)) vecs))))))
 
 ;; srfi-43 vector-for-each
 (define (vector-for-each-with-index proc vec . more)
#
vector-for-each-with-index
#
も同様だな。
2014/09/10 08:02:45 UTCえんどう
#
PLT Scheme改めRacketとかじゃだめなのかなあ>お試し用途
2014/09/10 10:19:13 UTC齊藤
#
Emacs とセットで使うのが当然っていう状況に甘えすぎた感はありますね。 Racket が統合開発環境を用意したのは、それが出来るだけのリソースがあるからではありますけど、必要だという意識もあったのかもしれませんね。
2014/09/10 10:46:16 UTCshiro
#
Racketの場合、授業で学生に使わせるってのもあるからなあ。
#
自分や自分に近い人が常用しないと改善できないんだけど、大学みたいに常に初学者が供給される状況でない場合は自分や同等の経験者しか使わなくて、常用するためには「Emacs上で使うよりも使いやすい」環境を作らないとならない。それはなかなかにハードルが高い.
2014/09/10 11:23:49 UTC齊藤
#
なるほど。 使い勝手っていうのは地味にノウハウを積み重ねるしかないので、実際に使う人がそこにいるっていうのは重要ですね。
2014/09/10 11:27:36 UTCyamasushi
#
SciTEに組み込んだLuaは使いやすかったです。Emacsもしくはvimという選択肢しかないような印象があるのは不思議ですよね。
#
たしか,luaのウィンドウズ用パッケージだったか。
#
https://code.google.com/p/luaforwindows/ これですね。SciTEだったらどこでも使えるわけですが,あんまりこの手の話題には出てこない不憫なエディタだな・・・・・・
#
(^c ^v x の三種類が使えるかどうかは大変おおきいのです。)
#
(まずとまどうのがコピペなんで。Emacsとかvimで )
#
で,lisp向けの設定を公開しているひともいるにいる見たいですね。
2014/09/10 11:35:20 UTC齊藤
#
秀丸でなんとかしようとするのは見たことあります。 Sublime text はもう使い物になるみたいですし、 atom あたりもどんどん強化されてる感じ。
2014/09/10 11:37:08 UTCyamasushi
#
なるほど。使いやすさというのは難しい話題なんですが,使いにくさというのは案外簡単で「コピペができるかどうか」につきるように思ってます。
2014/09/10 11:37:38 UTCshiro
#
Emacsかvimの2択、というのは、Unix上ではエディタとして事実上その2択状態がしばらく続いていたからかなあ。簡易エディタはあったけれど、言語モードなどかなり高機能に出来るエディタとしては。そんで、それぞれが開発環境としてかなり進んでしまったので、新たに立ち上げるよりあるものに乗っかる方が楽、という時代がしばらくあった。
#
さすがに環境が変わってきて、またエディタ戦国自体になりつつあるのは良いことだとは思う。
2014/09/10 11:41:51 UTCyamasushi
#
授業で使うんだけど教室のPCにインストールできないので,ブラウザで動く処理系を使っているというひともいます。ということは,ブラウザで使わせるようなシステムが受けるんじゃ・・・・
2014/09/10 11:42:04 UTCshiro
#
コピペについては、Emacs文化圏だとそもそも^c/^v/^xじゃない(キーアサインがぶつかる)という問題と、Emacsのコピペはkill-ringというものがあって履歴をずっと取っといてくれるんですが、それがないコピペというのは実に使いにくいため事実上使う気になれないという問題が。
#
ブラウザをREPLにしたら、という話は以前ここでも出たことがありました。Clojureでは既にあるみたいですね。
2014/09/10 11:44:13 UTCyamasushi
#
そこが,なんというか,ウィンドウズに毒されてしまうとkill-ringとかいう便利な機能よりも,手に染み付いた^x ^c ^vなんです。
#
QWERTYみたいなものでは。
2014/09/10 11:45:52 UTCshiro
#
いや、そこで類推してほしいんですよ。^x ^c ^vが使えないと「うわ、使いにくい」って思うでしょ? それと同様に、kill-ringが使えないと「うわ、使いにくい」って思うわけです。まあこの場合はkill-ringをそのままにしてキーアサインだけいじれば良い話なんですが、
#
motto
#
もっと一般的な話として、「初学者向けに簡単な環境を作りましょう」とやった場合、自分が今使ってる環境よりもずっと(自分にとって)使いにくい環境をわざわざ作らないとならなくなることが多いと想像されるわけなんですよ。
#
これは他に強いモチベーションが無いとなかなか難しいタスクだと思います。
2014/09/10 11:59:59 UTCyamasushi
#
ご紹介のblogにもありますけど,rlwrapは標準で欲しいかったりします・・・・
2014/09/10 12:04:04 UTCyamasushi
#
これは「Lispの壁の高さ」というよりはunix文化をとりまく状況の変化なのでは。面倒だけどやればそれなりに便利という時代だったんでしょうけれども,いまは面倒だから他をググる時代に。
2014/09/10 12:06:01 UTC齊藤
#
しかし、 rlwrap 程度があったところでそれが使える場面っていうのは物凄く限られているようにも思うんですが。
2014/09/10 12:06:49 UTCyamasushi
#
いやいや,あるのとないのでは全くちがいますよ。とくに初めて学ぶんだったらなおさら。つまんないことでつまずくものでは。
#
(初心者の気持ちがわかる=万年初心者,というだけの話なんですが。)
2014/09/10 12:08:59 UTC齊藤
#
Lisp 系言語ってワンライナー的な使い方はあまりしませんし、そういう前提の違いを無視して「他の言語にはあるのに Lisp にはない」という比較になるとナンセンスだなと思うんです。 その限られている場面 (初めて学ぶ場面) が重要だという主張に対しては納得できるのですが。
2014/09/10 12:09:55 UTCyamasushi
#
lisp系言語を初めて学ぶんだから,「そういう使い方をしない」ことを知らないわけですよね?
2014/09/10 12:10:35 UTCshiro
#
rlwrapが標準でついてないのはライセンスの都合です。個人的に、リモートでちょろっと入って作業する時とかに何か欲しいなと思うことはあるので、一応考えてはいます。
2014/09/10 12:12:59 UTC齊藤
#
知らないがためにこうしてしまうからそれに合わせようっていう解決策はちょっと違う話じゃないですか。 知らないなら知ってもらおうというのが本筋の話で。
2014/09/10 12:13:54 UTCshiro
#
そうだけど導線は必要ですよね。それが、使い始めたら自然にわかっちゃうようになってるのが理想。
2014/09/10 12:14:39 UTCyamasushi
#
えーと,「他の言語にあるのにこちらにはない」という趣旨じゃなくて,文字入力みたいなところでつまずくと続かないんです。多分最初はREPLでちょこちょこ試すわけで。
2014/09/10 12:15:13 UTC齊藤
#
ああ、私の発言は上のブログ記事についての言及です。
2014/09/10 12:18:06 UTCshiro
#
「初心者のキモチ」の話が出たついでに、goshは意図的に起動時にヘルプメッセージとか出さないようにしてるんですが、プロンプトが出たところでとりあえずhelpと打ってみると今はunbound variableエラーになりますよね。これをreplがフックして「helpが欲しかったらこうするといいよ」みたいなメッセージを出す、なんて機能は需要があると思いますか?
2014/09/10 12:19:37 UTCkoguro
#
個人的にはとりあえず、rlwrap + Lisp風インデント + 入力履歴をファイルに落とせる機能 を持った gosh があれば、いいんじゃないかなと思ったりしてます。
#
helpha
#
help は Gauche ユーザリファレンスのWebページに検索機能がついてればと。
2014/09/10 12:20:58 UTC齊藤
#
Racket のドキュメントの検索機能は良いと思ってました。
2014/09/10 12:21:58 UTCshiro
#
あれ、うちのChromeはアドレスバーに gosh キーワード と打つとそこに飛ぶんだけど何か設定してたかな
2014/09/10 12:22:09 UTC齊藤
#
OpenSearch かな?
2014/09/10 12:24:49 UTCshiro
#
ああ、単に http://practical-scheme.net/gauche/man/?l=jp&p=%s をgoshという名前でbookmarkしてるだけだった。
2014/09/10 12:25:51 UTC齊藤
#
http://ja.wikipedia.org/wiki/OpenSearch
#
ちょっとした設定をいれておけば、自動的にキーワードと検索エンジン (?) を結び付けられるようです。
2014/09/10 12:33:23 UTC齊藤
#
使いながら学習っていっても、さすがにわけもわからずデタラメに入力するわけではないので、そこであまりメッセージを親切にしてもしょうがない気がします。
2014/09/10 13:01:46 UTCshiro
#
んーでも例えばreplからinfoが呼べるとかaproposとかdescribeとか、最初のとっかかりがないと知らないままになったりしないかな。
2014/09/10 13:09:42 UTC齊藤
#
リファレンスとは別に定番になりうるチュートリアル的なものがあるとよいと思うんですけど…
2014/09/10 13:12:10 UTCshiro
#
インタラクティブチュートリアルは欲しいかもね。そういえばEmacsも最初にチュートリアルやった覚えが。
2014/09/10 13:32:34 UTCyamasushi
#
初心者向けの機能というか,お絵かきが標準でできればモチベーションは維持しやすいかと思います。
2014/09/10 13:37:15 UTCyamasushi
#
プログラミングをどうやって学ぶかっていっても,なにもわかんない状態では「おまじないを唱える」でしかないんで,実行した結果が絵になるという環境が揃っていると,あとはググるなりなんなりするのかなと。まあ,絵じゃなくてもいいんですけど。いまならいろいろありそうですが。Racketでしたっけ?あれが優れているのは絵が書けるからでは?
#
helpなんですが,あまりここに注力しても,初心者の支えになるかどうか。読む人は読むのですが,・・・・たぶんドキュメントを初心者向けに作るというのがとても難しいと思います。
2014/09/10 13:41:10 UTCshiro
#
helpについてはドキュメントではなく、必要な情報へのポインタを示す機能を想定しています。
#
とりあえず何したら良いのかわからない時に、プロンプトに何か打ってみたら次にどこを見れば良いのかの手がかりが得られる、程度の機能です。
2014/09/10 13:44:15 UTCyamasushi
#
なるほど。エラーのときにそういう情報が欲しいことはありますね。
#
REPLでの障害情報・エラー情報と関連するマニュアルの項目番号が結びつくような工夫があれば便利ですね。
2014/09/10 13:53:58 UTCとおる。
#
初学者向けに何を用意すれば良いかという点では、ScratchJr が参考になるんじゃないかなーと思います。 http://www.scratchjr.org
#
これは、Squeak を 子供向けにアレンジしたものである Scratch を、さらに 5 歳から 7 歳向けに機能をかなりしぼった物なんですが、これの狙いはたぶん、ある時点で子供たちがもっと高機能な物の必要性を実感できるようにすることにあるんじゃないかなと思いました。
#
Smalltalk つながりですが、Pharo のチュートリアルはシンプルですがすごく分かりやすかったです。 http://pharo.org
#
絵が描けるのもいいと思いますけど、最近ならウェブサイトが作れるとかでもいいかもしれませんね。makiki 上にすこしずつコードを追加していくような感じで。
2014/09/10 17:13:30 UTCshiro
#
初学者向けに機能を絞るというのは、Dr.Racketのlanguage levelだっけ、あれでもやってることで、大事だろうなと思うんだけど、どこに絞るべきかってのが実際に初学者を横において使ってもらわないとなかなかわからないんだよなあ。機能は増やすより減らす方がほんと難しい。
2014/09/10 21:32:40 UTCshiro
#
上の方で「授業に使うんだけど教室のPCにインストールできない」というポストがあったけど、以前配布してたGauche-mingwのzipはzip展開するだけでインストール無しで使えたんだが、そういうのも需要はあるってことかな? 面倒なんで配布やめちゃったんだけど。
2014/09/10 21:40:19 UTCyamasushi
#
「授業に使うんだけど教室のPCにインストールできない」というのはPCに教師が自由にインストールすることができないというだけみたいです。
#
「教室のPCにあるソフトでどうにかしないといけない。ブラウザがあるじゃない。」ということらしいです。
#
その授業というのは知識工学で,schemeによる演習をするということで,Javascriptで実装されたschemeを使ったそうです。
#
schemeで授業をするというのは苦労が多いみたいです・・・・・政治的な理由で。
2014/09/10 21:49:14 UTCyamasushi
#
なので,わたしの書いた文脈では, asm.jsでしたっけ? あの上でgaucheが動くかどうかということになりましょうか・・・・・
2014/09/10 21:59:20 UTCshiro
#
Gauche-mingwだとUSBやCD-ROMからでもそのまま起動できるけど、最近はそういう外部プログラムの起動もUACがインターセプトしてadminパスワード入れないとならなかったりするんだっけ?