unison/unison-src/tests/ability-inference-fail.uu
2020-02-07 18:59:37 -08:00

36 lines
872 B
Plaintext

ability Emit a where
emit : a ->{Emit a} ()
type Stream a = Stream ('{Emit a} ())
use Stream Stream
use Optional None Some
namespace Stream where
unfold : s -> (s -> Optional (a, s)) -> Stream a
unfold s f = Stream 'let
-- step : (s -> Optional (a,s)) -> s ->{Emit a} ()
step f s = match f s with
None -> ()
Some (a, s) -> emit a
step f s
step f s
---
I found a value of type a where I expected to find one of type a:
11 | unfold : s -> (s -> Optional (a, s)) -> Stream a
12 | unfold s f = Stream 'let
13 | -- step : (s -> Optional (a,s)) -> s ->{Emit a} ()
14 | step f s = match f s with
15 | None -> ()
16 | Some (a, s) -> emit a
17 | step f s
18 | step f s
from right here:
4 | type Stream a = Stream ('{Emit a} ())