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:picolisp@software-lab.de?subject=Unsubscribe