Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
26
Task/Abstract-type/Mercury/abstract-type.mercury
Normal file
26
Task/Abstract-type/Mercury/abstract-type.mercury
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
:- module eq.
|
||||
:- interface.
|
||||
|
||||
:- typeclass eq(T) where [
|
||||
pred (T::in) == (T::in) is semidet,
|
||||
pred (T::in) \= (T::in) is semidet
|
||||
].
|
||||
|
||||
:- pred f(T::in) is semidet <= eq(T).
|
||||
|
||||
:- type foo
|
||||
---> foo(
|
||||
x :: int,
|
||||
str :: string
|
||||
).
|
||||
|
||||
:- instance eq(foo).
|
||||
|
||||
:- implementation.
|
||||
|
||||
f(X) :- X == X.
|
||||
|
||||
:- instance eq(foo) where [
|
||||
A == B :- (A^x = B^x, A^str = B^str),
|
||||
A \= B :- not A == B
|
||||
].
|
||||
Loading…
Add table
Add a link
Reference in a new issue