Arc Forum | First option makes sense.Second option, part a: I actually find `~empty?` cleare...

2 points by akkartik 2490 days ago | link | parent

First option makes sense.

Second option, part a: I actually find `~empty?` clearer than `some` in this case. Also `some` means something different in Arc.

Second option, part b: wait, then `(if xs ...)` would sometimes not do the opposite of `(if (no xs) ...)`!



2 points by rocketnia 2489 days ago | link

For what it's worth, my approach here is pattern-matching. In Lathe Comforts for Racket I implement a macro `expect` which expands to Racket's `match` like so:

 (expect subject pattern else
 then)
 ->
 (match subject
 [pattern then]
 [_ else])
If Arc came with a similar pattern-matching DSL and `expect`, we could write this:

 (def map1 (f xs)
 (expect xs (cons x xs) ()
 (cons (f x) (map1 f xs))))
The line "expect xs (cons x xs) ()" conveys "If xs isn't a cons cell, finish with an empty list. Otherwise, proceed with x and xs bound to its car and cdr."

-----




AltStyle によって変換されたページ (->オリジナル) /