2008/12/17

【Scheme】【Lisp】携帯電話で使えるiアプリすぷ

こ、これは・・・!? 
10120688477

携帯電話で使える iアプリすぷ
http://www.yuasa.kuis.kyoto-u.ac.jp/~yuasa/jakld-i/jakld-jssst.pdf

*注、PDF直リンク


(TUT-)Scheme入門
http://www.yuasa.kuis.kyoto-u.ac.jp/~hiraisi/files/tus-lecture.pptx

*注、pptx直リンク
↑これに載ってた。


[追記]
ケータイで動く i アプリすぷ iαpplisp
http://jp.franz.com/base/seminar/2006-11-22/SeminarNov2006-yuasa.pdf

[追記2]
docomo携帯で下記URLからダウンロード可能!
http://ryujin.kuis.kyoto-u.ac.jp/~yuasa/jakld-i/

試しに、
(define h "hello")
h
ってして、evalってしたら・・・
Debug Windowに "hello"
すげーな!最近は携帯アプリでプログラミングっすか!?

【Scheme】SchemeでもCollatz


ということでSchemeでも今できる範囲で書いてみた。
きっとヒドイのだろうけど。。
(define (collatz n)
  (display n)
  (newline)
  (if (> n 1)
    (if (even? n)
      (collatz (/ n 2))
      (collatz (+ (* n 3) 1)))))
(collatz 5)
;=> 5
;=> 16
;=> 8
;=> 4
;=> 2
;=> 1

プログラミングGauche

2008/11/23

【JavaScript】インタラクティブなJavaScript実行【これは便利】

JavaScriptのシェル改良版
http://muumoo.jp/news/2008/06/21/0jssh.html

[javascript]InteractiveJS その2
http://d.hatena.ne.jp/nak2k/20050911/p1

【scheme】【javascript】Hello world その2

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

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」とか呼ばれてるらしいね。
らしいばかりでスマソ。

【scheme】【JavaScript】関数定義(可変長引数)(C#でいうparams)

schemeでも関数の定義。
可変長引数について。

C#のparamsキーワード付き引数的な、JavaScriptのargumentsプロパティ的な。

そうそう、コメントの仕方もわかった♪
「;」で始まる行はコメントになるっぽい。

参考はこちら
http://www.shido.info/lisp/scheme4.html
(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))

でも、引数が0個もしくは1個もしくは複数個とかできんのかなぁー。
JavaScriptだとこんな感じか?

(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)

The Little Schemer, 4th Edition

2008/11/22

【scheme】Scheme(Lisp)はじめました。

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」読みながら♪
この本は噂どおり良書っぽいです。
毎日昼休みにやってます♪

2008/10/09

【C#】XML(デ)シリアライズ(XmlSerializer、SoapFormatter)

System.Xml.Serialization
⇒ XmlSerializer
System.Runtime.Serialization.Formatters.Soap (同名のdllを参照)
⇒ SoapFormatter
C#プログラミングレッスン:XmlSerializer
http://archive.mag2.com/0000141533/20070405071000000.html?start=20
C#プログラミングレッスン:シリアル化(SOAP形式)
http://www.melma.com/backnumber_120830_3590692/
SoapFormatter クラス
http://msdn.microsoft.com/ja-jp/library/system.runtime.serialization.formatters.soap.soapformatter(VS.71).aspx
MSDN:基本的なシリアル化
http://msdn.microsoft.com/ja-jp/library/4abbf6k0(VS.80).aspx