mirror of
https://github.com/edwinb/Idris2-boot.git
synced 2024-12-18 18:31:43 +03:00
ed5b53d97f
Sorry for the less than informative title :). Lots going on here. It started as an attempt to fix unification to deal with laziness coercions in trickier places, but unearthed a couple of tricky and interconnected issues that are hard to unpick into a single patch. So, this fixes a few things: - default hints should only be resolved on the current elaboration (e.g. nested function definitions, not the outer definition which might not yet be complete) - delayed elaborators should be allowed to have nested delayed elaborators, which means disambiguation is a little bit better - we should delay elaborating arguments where the type isn't known yet, because later arguments may resolve the type, and we can use this to help with disambiguation/laziness coercions - other bits and pieces arising
18 lines
527 B
Plaintext
18 lines
527 B
Plaintext
1/1: Building Door (Door.idr)
|
|
Main> (y @@ res) => ?now_4
|
|
Main> (True @@ d) => ?now_4
|
|
(False @@ d) => ?now_5
|
|
Main> 0 m : Type -> Type
|
|
1 d : Door Open
|
|
x : Integer
|
|
0 r : Res Bool (\r => (Door (if r then Open else Closed)))
|
|
-------------------------------------
|
|
now_2 : Use Many m ()
|
|
Main> 0 m : Type -> Type
|
|
1 d : Door Closed
|
|
x : Integer
|
|
0 r : Res Bool (\r => (Door (if r then Open else Closed)))
|
|
-------------------------------------
|
|
now_3 : Use Many m ()
|
|
Main> Bye for now!
|