Amb: Difference between revisions

Content deleted Content added
Thundergnat (talk | contribs)
m →‎{{header|Ring}}: Remove vanity tags
Line 1,065: Line 1,065:
import extensions'routines.
import extensions'routines.


joinable = (:aFormer:aLater)(aFormer[aFormer length - 1] == aLater[0]).
joinable(former,later) = (former[former length - 1] == later[0]).


dispatcher =
dispatcher =
{
{
eval(object anArray, Func2 aFunction)
eval(object a, Func2 f)
[
[
^ aFunction(anArray[0],anArray[1]).
^ f(a[0],a[1]).
]
]


eval(object anArray, Func3 aFunction)
eval(object a, Func3 f)
[
[
^ aFunction(anArray[0], anArray[1],anArray[2]).
^ f(a[0], a[1],a[2]).
]
]
eval(object anArray, Func4 aFunction)
eval(object a, Func4 f)
[
[
^ aFunction(anArray[0],anArray[1],anArray[2],anArray[3]).
^ f(a[0],a[1],a[2],a[3]).
]
]
eval(object anArray, Func5 aFunction)
eval(object a, Func5 f)
[
[
^ aFunction(anArray[0],anArray[1],anArray[2],anArray[3],anArray[4]).
^ f(a[0],a[1],a[2],a[3],a[4]).
]
]

}.
}.


Line 1,095: Line 1,094:
object theCombinator.
object theCombinator.
constructor new(V<object> Arguments)
generic constructor new(V<object> args)
[
[
theCombinator := SequentialEnumerator new(Arguments).
theCombinator := SequentialEnumerator new(args).
]
]


seek : aCondition
seek : cond
[
[
theCombinator reset.
theCombinator reset.


theCombinator seekEach(:v)(dispatcher eval(v,aCondition))
theCombinator seekEach(:v)(dispatcher eval(v,cond))
]
]
Line 1,118: Line 1,117:
ambOperator =
ambOperator =
{
{
generic for(V<object> Arguments)
generic for(V<object> args)
= AmbValueCollection new(Arguments).
= AmbValueCollection new(args).
}.
}.


public program =
public program
[
[
try(ambOperator
try(ambOperator
Line 1,135: Line 1,134:
}.
}.
console readChar.
console readChar
].</lang>
]</lang>
{{out}}
{{out}}
<pre>
<pre>