«前の日記(2005-07-20) 最新 次の日記(2005-07-22)» 編集

Matzにっき


2005-07-21 [長年日記]

_ [言語] Perlの文法を持ったJavaベースのスクリプト言語 - Sleep 2.0公開

JVM上で動作するスクリプト言語がまたひとつ。

ま、いろんな言語が登場するのは良いことだけど、Sleepに関して言えば すくなくとも外見からはあまり魅力を感じない言語ではある。やっぱ、Perl(の文法)に影響を受けるとどう転んでも美しくない。

しかし、MYCOM PCは(Java関連の)オープンソースソフトウェアを紹介してくれるのは ありがたいけど、情報元へのリンクがないのがいただけない。 たとえばSleepだったら「The Sleep Scripting Project」への リンクがあってしかるべきではないだろうか。

_ [Hack]今日のハック

tDiaryがアップデートされてCSRF対策が行われたのはよいが、 おかげでtdiary-mode.elから更新できなくなっていた。 http.elとtdiary-mode.elの最新版を入手し、 変更点をマージした。

手元のものは

  • html-modeではなくrd-modeベース (tdiary-mode.el)
  • update後、自動的にreplaceモードに (tdiary-mode.el)
  • ssl.elを使ったSSLアクセスに対応 (http.el)

という変更が加えられている。

_ [Ruby]lambda式

先日来考えているlambdaについてだが、 以下のようなものを考えている。

  • 「->(a){...}」でlambda式を表現する。
  • lambda式のパラメータはメソッドのパラメータと同様の形式が指定できる。オプション引数などもあり。
  • 1.9で導入された「{|a|...}」形式は取り止め
  • 「ary.each -> x {puts x}」という形式も許す。これはlambdaを引数とする「ary.each(->(x){puts x})」ではなく「ary.each{|x| puts x}」を意味する。

yacc記述はなんとかなりそうだが、メソッドの引数部分と ブロックパラメータの部分の実装が違いすぎて、動かすのは大変そう。

本日のツッコミ(全13件) [ツッコミを入れる]
_ なかだ (2005-07-22 11:00)

lamdaを引数にしたい場合は、 ary.each(->x{puts x}) ?<br>それとも括弧がもう一つ?

_ なかだ (2005-07-22 11:04)

あ、「これはlambdaを引数とする…ではなく」というのがそういう意味ですか。失礼。<br>でも foo = ->(x) {puts x} って書くとなんかやだなぁ。

_ かくたに (2005-07-22 11:15)

すごーく下のほうに「関連リンク」が一応あります……。

_ なかむら(う) (2005-07-22 12:27)

->と同義の予約語lambdaを導入して、foo = lambda(x){puts x} とも書けるようにすれば「なんかやだなぁ」も解決?

_ ななしさん (2005-07-22 15:26)

>情報元へのリンクがないのがいただけない。<br>下のほうにいつもあるみたいですよ。<br>関連記事の下にあるので、いつもあれ?オフィシャルサイトは?って思ってしまいます。ああ、そうだ、下のほうにあるんだった。って。

_ まつもと (2005-07-22 15:41)

ありましたね、情報元へのリンク。見落としてましたよ。

_ まつもと (2005-07-22 15:41)

なかださん、<br><br> foo = ->(x){puts x}<br><br>はイヤですか。そうか、じゃあどういうのがいいでしょうね。<br>「->」はPerl6起源なのですが。

_ τ森 (2005-07-22 16:28)

関数型言語の文化圏からすると引数の前に -> が来るのは激しく気持ち悪い気もしますが……

_ まつもと (2005-07-22 16:52)

「関数型言語の文化圏」では関数型を「引数型 -> 戻り値型」と書くんでしたっけ。<br><br>別に「->」に固執していませんから、よりよいアイディアがあれば歓迎します。<br>条件は<br><br> * 無名関数を表現する<br> * 引数リストに前置する<br> * 今まで使われていない記号の組合せ<br> * より多くの人に違和感がない(できれば)<br><br>くらいでしょうか。

_ nobsun (2005-07-23 00:01)

Haskellでは a -> b を(->) a b と書くこともありますね:)。<br>\ というの却下でしたっけ? \(x){puts x}

_ τ森 (2005-07-23 14:32)

ちなみにHaskellだとlambda式は<br><br>\a b c -> a+b+c<br><br>というように書き、<br>OCamlだと(無名)関数を<br><br>fun a b c -> a+b+c<br><br>というように書きます。

_ arai (2005-07-24 05:24)

はああ、私のような馬鹿にはよくわかりません。<br>lambdaのパラメータをそんなに複雑にする場面があるのでしょうか.

_ まつもと (2005-07-24 09:16)

複雑って言っても、省略可能な引数が指定できるようになるだけですからねえ。lambdaっていうのは要するに関数ですから、できるものならメソッドと同じように省略可能な引数も使いたいってのは自然な欲求ではないでしょうか。

お名前:
E-mail:
コメント:
[]

«前の日記(2005-07-20) 最新 次の日記(2005-07-22)» 編集

track feed Matzにっき Creative Commons License This work is licensed under a Creative Commons License.