Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,2 @@
class Eatable a where
eat :: a -> String

View file

@ -0,0 +1 @@
data (Eatable a) => FoodBox a = F [a]

View file

@ -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"

View file

@ -0,0 +1,2 @@
instance Eatable Double where
eat d = "I'm eating " ++ show d

View file

@ -0,0 +1,2 @@
class Food a where
munch :: a -> String

View file

@ -0,0 +1,2 @@
instance (Food a) => Eatable a where
eat x = munch x

View file

@ -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