Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,2 @@
|
|||
class Eatable a where
|
||||
eat :: a -> String
|
||||
|
|
@ -0,0 +1 @@
|
|||
data (Eatable a) => FoodBox a = F [a]
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
data Banana = Foo -- the implementation doesn't really matter in this case
|
||||
instance Eatable Banana where
|
||||
eat _ = "I'm eating a banana"
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
instance Eatable Double where
|
||||
eat d = "I'm eating " ++ show d
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
class Food a where
|
||||
munch :: a -> String
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
instance (Food a) => Eatable a where
|
||||
eat x = munch x
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
import Utils # From the UniLib package to get the Class class.
|
||||
|
||||
class Eatable:Class()
|
||||
end
|
||||
|
||||
class Fish:Eatable(name)
|
||||
method eat(); write("Eating "+name); end
|
||||
end
|
||||
|
||||
class Rock:Class(name)
|
||||
method eat(); write("Eating "+name); end
|
||||
end
|
||||
|
||||
class FoodBox(A)
|
||||
initially
|
||||
every item := !A do if "Eatable" == item.Type() then next else bad := "yes"
|
||||
return /bad
|
||||
end
|
||||
|
||||
procedure main()
|
||||
if FoodBox([Fish("salmon")]) then write("Edible") else write("Inedible")
|
||||
if FoodBox([Rock("granite")]) then write("Edible") else write("Inedible")
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue