K.Sasada's Home Page

こめんとのついか

こめんとこめんと!

message

please add long comment :).

_26(Mon)

昨日の続き。ちょっと揃えてみると、

(define (myabs  x) (        (if (< x 0)       -  (else  +))  x)   ) ; scheme
(defun   myabs (x) (funcall (if (< x 0)      '-  (else '+))  x)   ) ; xyzzy
 def     myabs (x)  x.send  (if (x.< 0) then :-@  else :+@ end) end # ruby

いや、だから何だ、とか言われるとアレなんですが。揃え方が卑怯な気がしなくもない。

でも、scheme が funcall っぽいことが必要ないってのが目立つ。だからって、

3.(:abs) => 3.__send__ :abs

と解釈して欲しい、とかは誰も思わないんだろうなぁ。

 def myabs (x)  x.(if (x.< 0) ? :-@  : :+@ end) end # not ruby X(

こんなん。

そもそも意味的に違うか、:+@'+ は同じで + は別もん。+ にあたるものは、Schemeにしか無い、のかな。

Perl とかってどうなるのかな。Perl は全然わからない。


勘違い発覚。Scheme において、 values(call/cc (lambda (c) ...)) と同様だと思っていて。


(display
 (let ((c1 values))
   (display 
    (let ((c2 values))
      (display
       (let ((c3 values))
         (c1 3)
         ))))))

(newline)

(display
 (call/cc (lambda (c1)
            (display
             (call/cc (lambda (c2)
                        (display
                         (call/cc (lambda (c3)
                                    (c1 3)
                                    )))))))))

2つのS式は同じモノだと思ったら、結果は(DrSchemeにて)

3#<void>#<void>
3

そうだよなぁ、そうしないと values を特別扱いしないとあかんもんなぁ。values は現在の continuation に対して複数の値を渡すためのもの、かね。


ブラックブラック4袋目。うーむ。


地震コワ。コワ。

_あひる(Mon May 26 02:18:50 JST 2003)

 興味深い...

_ささだ(Mon May 26 02:28:06 JST 2003)

 先生、そのネタは旬が過ぎています!(ぉ

_たはら(Tue May 27 16:54:23 JST 2003)

こんにちは。召喚されてきました。

python で myabs を一行で書く方法を思いつきません。 複数行で書くと全然面白くないですが、こんな感じです。

def myabs(x):
    if x<0:
        return -x
    return x
_ささだ(Tue May 27 17:00:04 JST 2003)

 どうもありがとうございます。やっぱこれ以上無理ですかねぇ。メソッドを if で選択できる、みたいなものがあると面白いと思ったのですが。

_たはら(Tue May 27 19:11:38 JST 2003)

 def myabs(x):return filter(lambda x:x>0, (x,-x))[0] #思いつきました。けど、こういうのはパイソニックじゃないですね。

_ささだ(Tue May 27 21:07:25 JST 2003)

 うーん、何やってるんだかわからない ^^;


好きなだけ長いコメントをどうぞ。

お名前


back

tton 記述が使えます。YukiWikiな記述してりゃ問題ありません。

「行頭に#code」 と、「行頭に#end」 で挟むと、その間の行は pre で囲まれます。プログラムのソースを書くときに使ってください。

例:

#code

(なんかプログラム書く)

#end

リンクは

[[なまえ|http://www.example.org]]

とか

[[http://www.example.org]]

で貼れます。

$Date: 2003/04/28 10:27:51 $