Perl で半角カナと全角カナの変換をする
Perl を使って半角カタカナと全角カタカナの変換をするスクリプトを、標準モジュールの Encode.pm と Unicode::Japanese と Lingua::JA::Regular::Unicode を使ってそれぞれ変換スクリプトを書いてみる。 まずは、標準モジュールの Encode.pm を使った場合。 変換を文字コード euc-jp で行うために、変換前と変換後に utf-8 との文…続きを読む
Perl を使って半角カタカナと全角カタカナの変換をするスクリプトを、標準モジュールの Encode.pm と Unicode::Japanese と Lingua::JA::Regular::Unicode を使ってそれぞれ変換スクリプトを書いてみる。 まずは、標準モジュールの Encode.pm を使った場合。 変換を文字コード euc-jp で行うために、変換前と変換後に utf-8 との文…続きを読む
以下は構文解析を実行から分離した新しい評価器の全コード (define apply-in-underlying-scheme apply) ;;;; eval の定義 (define (eval exp env) ((analyze exp) env)) ;;;; 構文解析手続き (define (analyze exp) (cond ((self-evaluating? exp) (analyz…続きを読む
SICP(計算機プログラムの構造と解釈)の 問題4.21 にある Y コンビネータ(Combinator)を JavaScript で実装してみる。 デモ:Y Combinator with JavaScript – SICP(計算機プログラムの構造と解釈) 問題4.21 Factorial Factorial のスクリプトコード (function (n) { return (fun…続きを読む
問題4.21 λ式だけを使って再帰をしている問題のコードを見て、以前読んだYコンビネータの記事(Y Combinatorを直感的に理解。しようと試みる。 – 医者を志す妻を応援する夫の日記、Y コンビネータって何? – IT戦記)を思い出した。 脚注にはY演算子(Y operator)と書かれていて、何か関係があるのかと思ったら、Yコンビネータの日本語訳は "不動…続きを読む
問題4.20 a. letrec 式を導出された式として実装する letrec 式を let 式に変換する letrec->let 手続きを定義する (define (eval exp env) (cond ((self-evaluating? exp) exp) ;; 省略 ((letrec? exp) (eval (letrec->let exp) env)) ;; 省略 (else (…続きを読む
問題4.19 次の式を評価した際の結果について。 (let ((a 1)) (define (f x) (define b (+ a x)) (define a 5) (+ a b)) (f 10)) Ben の主張する define に逐次規則を使って結果を得る場合。 ;;; M-Eval input: (let ((a 1)) (define (f x) (define b (+ a x)) …続きを読む
問題4.18 どうも解らなかったので以下のサイトを参考にした。 参考:4.1.6 内部定義 – 三十路プログラマ (define (solve f y0 dt) (define y (integral (delay dy) y0 dt)) (define dy (stream-map f y)) y) ;; 最初の掃き出し方 (define solve (lambda (f y0 dt…続きを読む
問題4.17 フレームの生成を確認するために、手続き make-frame にリーダマクロを付けて読み出してみる。 (define (make-frame variables values) #?=(cons variables values)) 手続き scan-out-defines を使って、定義を逐次的に解釈した場合と内部定義を掃き出した場合とを比較する。 定義を逐次的に解釈した場合 ;;…続きを読む
問題4.16 a. lookup-variable-value に、値が *unassigned* の場合にエラーを返す処理を追加する。 (define (lookup-variable-value var env) (define (env-loop env) (define (scan vars vals) (cond ((null? vars) (env-loop (enclosing-en…続きを読む
オブジェクトっぽい話が分かるかもしれないJavaScript講座 その1 | Takazudo Clipping* で JavaScript の prototype を使ってメソッドをつけるとメモリを食わなくていいとの話が出ていた。 さらに、そのサイトの参考先の Kristoffer’s tidbits : Javascript prototype versus closure exe…続きを読む