mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-21 02:31:50 +03:00
39 lines
839 B
Idris
39 lines
839 B
Idris
%default total
|
|
|
|
-- We put it all in a failing block so as not to pollute the scope
|
|
-- The point is that because we have not specified `[search a]` when
|
|
-- defining `Wrap` then we cannot find the `Wrap` implementation in
|
|
-- the test.
|
|
|
|
failing "Can't find an implementation for Wrap ?ph Nat."
|
|
|
|
record Wrap (phantom : Type) (a : Type) where
|
|
constructor MkWrap
|
|
unWrap : a
|
|
|
|
%hint
|
|
zero : Wrap Bool Nat
|
|
zero = MkWrap 0
|
|
|
|
getWrappedVal : Wrap ph a => a
|
|
getWrappedVal @{w} = unWrap w
|
|
|
|
test : Main.getWrappedVal === Z
|
|
test = Refl
|
|
|
|
record Wrap (phantom : Type) (a : Type) where
|
|
-- whereas this will give us the right behaviour
|
|
[search a]
|
|
constructor MkWrap
|
|
unWrap : a
|
|
|
|
%hint
|
|
zero : Wrap Bool Nat
|
|
zero = MkWrap 0
|
|
|
|
getWrappedVal : Wrap ph a => a
|
|
getWrappedVal @{w} = unWrap w
|
|
|
|
test : Main.getWrappedVal === Z
|
|
test = Refl
|