Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/vmchale/recursion

Recursion schemes in ATS
https://github.com/vmchale/recursion

Last synced: 3 months ago
JSON representation

Recursion schemes in ATS

Lists

README

        

# recursion

[![Build Status](https://travis-ci.org/vmchale/recursion.svg?branch=master)](https://travis-ci.org/vmchale/recusion)

## Example

Sum a list of integers using a catamorphism:

```ats
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 = go(x0), is)
end
```