Hi Joe,
> (be add1-or-double (@X @Num)
> (member @X (1 2 3 4))
> (@Ans + 1 (-> @X))
> (@Ans2 * 2 (-> @X))
> (or ((equal @Num @Ans)) ((equal @Num @Ans2))))
>
> (? (add1-or-double @X 4))
> @X=2 @X=3:
OK
> If I try this:
>
> (be add1-or-double (@X @Num)
> # (member @X (1 2 3 4))
> (@X range 1 100)
'range/3' is a predicate, not a generator. You can use it only for
range checks like:
: (? (range (1 . 5) 3))
-> T
: (? (range (1 . 5) 7))
-> NIL
Its main purpose is for database queries, to be used as a filter for
numeric or date values.
Instead, you might consider using 'for/2'
(be add1-or-double (@X @Num)
(for @X 4)
(@Ans + 1 (-> @X))
(@Ans2 * 2 (-> @X))
(or ((equal @Num @Ans)) ((equal @Num @Ans2))) )
To generate an unlimited supply of numbers, you could write
(be number (@N)
(@C box 0)
(repeat)
(@N inc (-> @C)) )
(be add1-or-double (@X @Num)
(number @X)
(@Ans + 1 (-> @X))
(@Ans2 * 2 (-> @X))
(or ((equal @Num @Ans)) ((equal @Num @Ans2))) )
Note, however, that this won't terminate.
♪♫
- Alex
--
UNSUBSCRIBE: mailto:[email protected]?subject=Unsubscribe