Skip to content

Instantly share code, notes, and snippets.

View tetsu-miyagawa's full-sized avatar

Tetsu Miyagawa tetsu-miyagawa

View GitHub Profile
@tetsu-miyagawa
tetsu-miyagawa / gist:13c3b107c83a18d8795a6a093df1985e
Last active March 19, 2022 02:02
リストの要素非破壊追加(Elixer)
iex> list1 = [3, 2, 1]
[3, 2, 1]
iex> list2 = [4 | list1]
[4, 3, 2, 1]
iex> list1
[3, 2, 1]
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section3.2.4.oz
Created December 11, 2015 13:23
CTMCP Section 3.2.4
declare Sqrt Iterate Abs
fun {Abs X} if X < 0.0 then ~X else X end end
fun {Iterate S IsDone Transform}
if {IsDone S} then S
else S1 in
S1={Transform S}
{Iterate S1 IsDone Transform}
end
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section3.2.2-fig3.4.oz
Last active December 4, 2015 13:53
CTMCP Section 3.2.2 Figure 3.4
declare Sqrt SqrtIter Improve GoodEnough Abs
fun {Sqrt X}
Guess = 1.0
in
{SqrtIter Guess X}
end
fun {SqrtIter Guess X}
if {GoodEnough Guess X} then Guess
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section2.9-12.oz
Last active November 25, 2015 14:26
CTMCP Section 2.9 Exercise 12
declare FinallyExample Eval
fun {Eval E}
if {IsNumber E} then E
else
case E
of plus(X Y) then {Eval X} + {Eval Y}
[] times(X Y) then {Eval X} * {Eval Y}
else raise illFormedExpr(E) end
end
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section2.9-10.oz
Created November 18, 2015 14:33
CTMCP Section 2.9 Exercise 6
local SMerge in
fun {SMerge Xs Ys}
case Xs#Ys
of nil#Ys then Ys
[] Xs#nil then Xs
[] (X|Xr)#(Y|Yr) then
if X=<Y then X|{SMerge Xr Ys}
else Y|{SMerge Xs Yr} end
end
end
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section2.9-6.oz
Last active November 18, 2015 14:37
CTMCP Section 2.9 Exercise 6
declare X Y
if f(X Y d)==f(a Y c) then {Browse 'case'(1)}
else {Browse 'case'(2)}
end
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section2.9-5.oz
Last active November 18, 2015 14:37
CTMCP Section 2.9 Exercise 5
declare Test
proc {Test X}
case X
of a|Z then {Browse 'case'(1)}
[] f(a) then {Browse 'case'(2)}
[] Y|Z andthen Y==Z then {Browse 'case'(3)}
[] Y|Z then {Browse 'case'(4)}
[] f(Y) then {Browse 'case'(5)}
else {Browse 'case'(6)} end
end
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section2.9-4-b-2.oz
Created November 17, 2015 14:12
CTMCP Section 2.9 Exercise 4 (b) 2
local X in
X=person(name:"George" age:25)
if {Label X}==person andthen {Arity X}.2.1==name andthen X.name=="George" then {Browse X.age}
else {Browse false}
end
end
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section2.9-4-b-1.oz
Created November 17, 2015 14:12
CTMCP Section 2.9 Exercise 4 (b) 1
local X in
X=person(name:"George" age:25)
case X
of person(name:"George" age:_) then {Browse X.age}
else {Browse false}
end
end
@tetsu-miyagawa
tetsu-miyagawa / CTMCP-Section2.9-4-a-2.oz
Created November 17, 2015 14:10
CTMCP Section 2.9 Exercise 4 (a) 2
local X Y T in
X=1
Y=1
T=X==Y
case T of true then {Browse true} else {Browse false} end
end