2003-07-01から1ヶ月間の記事一覧

Iteraror and Generator

#! ruby def fibUpTo(max) a,b = 1,1 while a #! python from __future__ import generators def fibGenerator(num): a,b = 1,1 while a class Fib: def __init__(self, max_num=0) self.max_num = max_num self.i = 1 self.num = 0 def __iter__ (self): re…

exercise 1.6

平方根を求めるアルゴリズム sqrt-root. ビルトイン関数に含まれているのだけど、アルゴリズムの演習って事で、 再実装してみる。 まずは、Schemeで。 (define (sqrt n) (define (abs n) (if (improve guess n) (average guess (/ n guess))) (define (good-…

size (length of a list)

関数プログラミングのテキストって、 末尾再帰はループに最適化可能と書いてる割りには、 例題のコードでは末尾再帰になっていない事が多い様な気がする。 # let null l = (l = );; val null : 'a list -> bool = (* 末尾再起で・・・ *) #let size l = let …

5つの事なる方法で実装してみる。 /* 手続き型。通常のループで */ int fib1(int num){ int a = 1, b = 0; while( num-- > 1 ){ a += b; b = a - b; } return b; } /* 2重再帰。一番遅い。 */ int fib2(int num){ if (num 再帰 */ int fib3_iter(int num, …

exercise 1.3

(define sum +) (define (square x) (* x x)) (define (foo a b c) (let x y))))) (sum (square (car alist">*1 (square (cadr alist))))) (define (main args) (display (foo (string->number (cadr args)) (string->number (caddr args)) (string->number …

// output to browser document.writeln("Hello, world");

いろいろな言語での HelloWorld ... やっぱりすでにこういうのあった(汗。でも、自分自身の学習のため、 暫く続けてみる。HelloWorld と fib くらいは書こうかな。 http://www2.latech.edu/~acm/HelloWorld.shtml http://wiki.s17.xrea.com/x/wiki/wiki.cgi…

Scheme (define (fib n) (if *1 (fib (- n 2))))) Python def fib1(n): return n <= 2 and 1 or fib1(n-1) + fib1(n-2) def fib2(n): if n <= 2: return 1 else : return fib2(n-1) + fib2(n-2) Haskell でパターンマッチを利用しての関数宣言。 fib :: Inte…

abs の実装。Scheme (define (fib n) (cond ((> n 0) n) ((= n 0) 0) ((< n 0) (- n)))) (define (fib n) (if (< n 0) (- n) n)) Ocaml let abs = fun x -> if x < 0 then -x else x;; Python abs1 = lambda x: x < 0 and -x or x def abs2(n) : if n < 0: r…

io:put_chars("Hello, world\n"). パターン・マッチングや、リストの内包表記等が使える。 Haskell, ML 系の言語に類似。並列処理もできる。 [ {X,Y} || X<-[0,1,2,3], Y<-[0,1,2,3] ] rule1 : 変数は大文字か、_で始まる文字列のみが使える。 rule2 : . で…

遅延ジェネレータの使い方。簡単な例を、イテレータやジェネレータを使って実装してみます。 for i in range(1, 11, 1): print i range(1, 11, 1) は 1..10迄の整数のリストを返す。リストを返す関数を使った場合、その場合は勿論リストが生成されるので、 …

#include <cilk.h> #include <stdio.h> cilk int main(int argc, char *argv[]){ printf("Hello, world\n"); return 0; } 何故か Cより手順が多くなってるなぁ(^^;</stdio.h></cilk.h>

main :: IO() main = putStr "Hello, world\n" - DONE C perl ruby python OCaml JAVA C++ Scheme C# Pike Brainf*ck Lua Ook! PHP Icon Haskell - TODO ada algol Akl apl arc awk B basic CHILL D nice except / tcl smalltalk whitespace javascript fort…

;; python で書いてみる。 def square(x): return x*x def sum_of_squares(x, y): return square(x) + square(y) def f(a): return sum_of_squares(a+1, a*2) # or # f = lambda a:sum_of_sequence(a+1, a*2) f(5) TODO : search about 遅延評価メカニズム …

Hello world と平行して SICP も毎日ちょっとずつ ;; 1.1.5 (define (square x) (* x x)) (define (sum-of-squares x y) (+ (square x) (square y))) (define (f a) (sum-of-squares (+ a 1) (* a 2))) (f 5) (f 5) の式を展開してみる。 (sum-of-squares (+…

hello.icn procedure main() write("hello world") end

MIT scheme and Guile has different behavior about null?

R5RS said : (null? obj) if obj is an empty list then #t else #f but, look Mit scheme. seem she treat #f as empty list. ; guile (null? #f) ; #f (eq? #f '()) ; #f ; mit scheme (null? #f) ; #t (eq? #f '()) ; #t I just take memo, but thise are…

PHP also has 'print' function.

split

(define (split str c) (let *1 (split (substring (+ 1 n) c)))))) *1:n (string-index str c))) (if (not n) (list str) (append (list (substring str 0 n

brainf*ck to Ook! translater

#!/usr/bin/env perl # usage: ./bf2ook.pl < hello.bf > hello.ook while (readline(*STDIN)){ s/\>/Ook. Ook?/g; s/\

Ook. Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook! Ook? Ook? Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook. Ook? Ook! Ook! Ook? Ook! Ook? Ook.…

#!/usr/bin/lua print "Hello world" so simple. more info about lua see http://www.lua.org/

>+++++++++[-]+++++++[-]++++++++[-]+++++++++++[-]++++++++[-]++++++++[ -]

units count

thx cr4m3r (define (units-count units amount) (if (null? units) '() (let *1 (newline) (units-count (cdr units) (remainder amount n))))) *1:n (car units))) (display n) (display ": ") (display (qutient amount n

int main(){ write("Hello, world\n"); return 0; }

/** Hello.cs */ using System; class Hello { static void Main(string[] args) { Console.WriteLine("Hello, world"); } }