Skip to content

vmchale/recursion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

recursion

Build Status

Example

Sum a list of integers using a catamorphism:

staload "SATS/recursive.sats"

#include "DATS/recursive.dats"
#include "DATS/recursive_list0.dats"

fun sum(is : list0(int)) : int =
  let
    fn go(i : list0f(int, int)) : int =
      case+ i of
        | list0_consf (x, xs) => x + xs
        | list0_nilf() => 0
  in
    cata(lam x0 =<cloref1> go(x0), is)
  end