Another update from ingydotnet^djgoku

This commit is contained in:
Ingy döt Net 2015-11-18 06:14:39 +00:00
parent 91df62d461
commit 948b86eafa
7604 changed files with 108452 additions and 22726 deletions

View file

@ -1,18 +1,19 @@
#define system.
#define extensions.
#symbol fibo = (:n)
[
n < 0
? [ #throw InvalidArgumentException new:"Must be non negative". ].
(n < 0)
? [ #throw InvalidArgumentException new &message:"Must be non negative". ].
^ { eval:n [ ^ (n > 1) ? [ ($self:(n - 2)) + ($self:(n - 1)) ] ! [ n ]. ] }:n.
].
#symbol program =
[
control forrange &int:-1 &int:10 &do: (&int:i)
-1 to:10 &doEach: (:i)
[
console << "fib(" << i << ")=".
console writeLiteral:"fib(":i:")=".
console writeLine:(fibo:i) | if &InvalidArgumentError: e
[

View file

@ -0,0 +1,13 @@
fib = fn f -> (
fn x -> if x == 0, do: 0, else: (if x == 1, do: 1, else: f.(x - 1) + f.(x - 2)) end
)
end
y = fn x -> (
fn f -> f.(f)
end).(
fn g -> x.(fn z ->(g.(g)).(z) end)
end)
end
IO.inspect y.(&(fib.(&1))).(40)

View file

@ -0,0 +1 @@
basis ` ($: @: g) @. test

View file

@ -0,0 +1 @@
basis @: (g^:test^:_)

View file

@ -1,11 +1,7 @@
function fibo(n) {
if (n < 0)
throw "Argument cannot be negative";
else
return (function(n) {
if (n < 2)
return 1;
else
return arguments.callee(n-1) + arguments.callee(n-2);
})(n);
if (n < 0) { throw "Argument cannot be negative"; }
return (function(n) {
return (n < 2) ? 1 : arguments.callee(n-1) + arguments.callee(n-2);
})(n);
}

View file

@ -1,11 +1,7 @@
function fibo(n) {
if (n < 0)
throw "Argument cannot be negative";
else
return (function fib(n) {
if (n < 2)
return 1;
else
return fib(n-1) + fib(n-2);
})(n);
if (n < 0) { throw "Argument cannot be negative"; }
return (function fib(n) {
return (n < 2) ? 1 : fib(n-1) + fib(n-2);
})(n);
}

View file

@ -0,0 +1 @@
fib: func [n /f][ do f: func [m] [ either m < 2 [m][(f m - 1) + f m - 2]] n]

View file

@ -1,17 +1,16 @@
@(do
(defmacro recursive ((. parm-init-pairs) . body)
(let ((hidden-name (gensym "RECURSIVE-")))
^(macrolet ((recurse (. args) ^(,',hidden-name ,*args)))
(labels ((,hidden-name (,*[mapcar first parm-init-pairs]) ,*body))
(,hidden-name ,*[mapcar second parm-init-pairs])))))
(defmacro recursive ((. parm-init-pairs) . body)
(let ((hidden-name (gensym "RECURSIVE-")))
^(macrolet ((recurse (. args) ^(,',hidden-name ,*args)))
(labels ((,hidden-name (,*[mapcar first parm-init-pairs]) ,*body))
(,hidden-name ,*[mapcar second parm-init-pairs])))))
(defun fib (number)
(if (< number 0)
(error "Error. The number entered: ~a is negative" number)
(recursive ((n number) (a 0) (b 1))
(if (= n 0)
a
(recurse (- n 1) b (+ a b))))))
(defun fib (number)
(if (< number 0)
(error "Error. The number entered: ~a is negative" number)
(recursive ((n number) (a 0) (b 1))
(if (= n 0)
a
(recurse (- n 1) b (+ a b))))))
(put-line `fib(10) = @(fib 10)`)
(put-line `fib(-1) = @(fib -1)`))
(put-line `fib(10) = @(fib 10)`)
(put-line `fib(-1) = @(fib -1)`))