JavaScriptのシェル改良版
http://muumoo.jp/news/2008/06/21/0jssh.html
[javascript]InteractiveJS その2
http://d.hatena.ne.jp/nak2k/20050911/p1
JavaScriptのシェル改良版
http://muumoo.jp/news/2008/06/21/0jssh.html
[javascript]InteractiveJS その2
http://d.hatena.ne.jp/nak2k/20050911/p1
schemeでHello world!!
参考はこちら
http://www.shido.info/lisp/scheme4.html
(define hello (lambda (name) (string-append "Hello " name "!"))) (hello "valvallow") |
出力結果
"Hello valvallow!"
(cons "Hello world" '()) |
出力結果
("Hello world")
(define sum3 (lambda (a b c) (+ a b c))) (sum3 1 2 3) |
出力結果
6
最後の関数はJavaScriptで書くとこんな感じ?
あえてグローバル空間汚すと
sum3 = function (a, b, c) { return a+b+c; };
sum3(1, 2, 3)
//出力結果 6
定義してそのまま実行して、グローバル空間汚さないんだったら
(function () { return function (a,b,c) { return a+b+c; }; })()(1,2,3)
//出力結果 6
ってか。
schemeでHello world!!
参考はこちら
http://www.shido.info/lisp/scheme4.html
schemeは関数型言語。
最近流行(?)のHaskellは純粋関数型言語らしいが、schemeはどうやら非純粋関数型言語らしい。
(define hello "Hello world") (define sayHello (lambda () hello)) hello (sayHello) |
実行結果
"Hello world"
"Hello world"
正直まだコメントの書き方も、変数や関数の名前付けの傾向もわかりませんw
(define hello "Hello world") ⇒ defineは引数を2つ取る組み込み関数
(define sayHello ⇒ 1つ目の引数がグローバル変数の名前
(lambda () hello)) ⇒ 2つ目の引数が変数の中身
⇒ ここでは1行目で定義したhelloグローバル変数の中身を出力するようにした
hello ⇒ 1行目で定義した変数の中身が出力される
(sayHello) ⇒ 2行目で定義した関数が実行された結果が出力される
関数型言語は、「さんしょうとうかせい」と「ふくさようがない」ということで、バグの少ない良いプログラムを書くことができるらしい。
C#のラムダはこういった関数型言語から影響を受けたらしい。
Rubyは、「MatzLisp」とか「Algolの仮面をかぶったLisp」とか呼ばれてるらしいね。
らしいばかりでスマソ。
(define three-args+ (lambda (a b c . d) (list a b c d))) (three-args+ 1 2 3) ;; => (1 2 3 ()) (three-args+ 1 2 3 4 5 6 7 8 9 10) ;; => (1 2 3 (4 5 6 7 8 9 10)) (define params+ (lambda (a . p) (list a p))) (params+ 1 2 4 5) ;; => (1 (2 4 5))
(function () { return function () { return arguments; }; })()(1,2,3,4,5,6,7)それとも?
(function () { return function () { var ret = []; for (var i = 0; i < arguments.length; i++)ret.push(arguments[i]); return ret; }; })()(1,2,3,4,5,6,7)
Lispの方言(らしい)schemeをはじめました。
括弧だらけでおもしろいですw
「ハッカーと画家」の影響です。
今度、参考書として「計算機プログラムの構造と解釈」でも買おうと思う。
訳が酷すぎるという噂なので、一応立ち読んでから決める。
開発環境は「DrScheme」というIDE(?)です。
ステップ実行でデバッグでっきます。
また、日本語にも対応しています。
詳しくは以下を参照
・インストール
もうひとつの Scheme 入門
http://www.shido.info/lisp/idx_scm.html
・日本語化
scm-startup
http://www.math.kyoto-u.ac.jp/~susumu/lecture/kjsen07/ex/scm-startup/index.html
↓ちなみにこんな感じ。↓
(cons "Sum of" (cons (cons 1 (cons 2 (cons 3 (cons 4 '())))) (cons "is" (cons 10 '()))))
出力結果 ⇒ ("Sum of" (1 2 3 4) "is" 10)
そういや、こないだRubyもはじめたところですw
「初めてのRuby」読みながら♪
この本は噂どおり良書っぽいです。
毎日昼休みにやってます♪