|
|
Log in / Subscribe / Register

An illustration of rewrite rules for the lambda calculus

[A series of local rewrite rules]

And this is a possible implementation of the split() function:

    def split(l: List(f24)) -> (List(f24), List(f24)):
      return split_inner(l, List/Nil, List/Nil)

    def split_inner(l: List(f24), a: List(f24), b: List(f24)) -> (List(f24), List(f24)):
      match l:
        case List/Nil:
          return (a, b)
        case List/Cons:
          return split_inner(l.tail, List/Cons(l.head, b), a)


    def merge_lists(a: List(f24), b: List(f24)) -> List(f24):
      match a:
        case List/Nil:
          return b
        case List/Cons:
          match b:
            case List/Nil:
              return a
            case List/Cons:
              if a.head < b.head:
                return List/Cons(a.head, merge_lists(a.tail, b))
              else:
                return List/Cons(b.head, merge_lists(b.tail, a))


to post comments


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds