module Duck_tales =
struct
class little_duck
(name
: string) = object
method quack = name ^ " quacks"
end
let huey = new little_duck "Huey"
let dewey = new little_duck "Dewey"
let louie = new little_duck "Louie"
end
module Disney =
struct
let donald_duck =
object
method quack = "Donald Duck quacks"
end
end
module Ducks_client =
struct
type duck = <
>
end
let _ =
let ducks = [
Duck_tales.huey ;
Duck_tales.dewey ;
Duck_tales.louie ;
Disney.donald_duck
] in
List.iter Ducks_client
.sound ducks
bW9kdWxlIER1Y2tfdGFsZXMgPQogIHN0cnVjdAogICAgY2xhc3MgbGl0dGxlX2R1Y2sgKG5hbWUgOiBzdHJpbmcpID0KICAgICAgb2JqZWN0CiAgICAgICAgbWV0aG9kIHF1YWNrID0gbmFtZSBeICIgcXVhY2tzIgogICAgICBlbmQKICAgIAogICAgbGV0IGh1ZXkgID0gbmV3IGxpdHRsZV9kdWNrICJIdWV5IgogICAgbGV0IGRld2V5ID0gbmV3IGxpdHRsZV9kdWNrICJEZXdleSIKICAgIGxldCBsb3VpZSA9IG5ldyBsaXR0bGVfZHVjayAiTG91aWUiCiAgZW5kCgptb2R1bGUgRGlzbmV5ID0KICBzdHJ1Y3QKICAgIGxldCBkb25hbGRfZHVjayA9CiAgICAgIG9iamVjdAogICAgICAgIG1ldGhvZCBxdWFjayA9ICJEb25hbGQgRHVjayBxdWFja3MiCiAgICAgIGVuZAogIGVuZAoKbW9kdWxlIER1Y2tzX2NsaWVudCA9CiAgc3RydWN0CiAgICB0eXBlIGR1Y2sgPSA8CiAgICAgIHF1YWNrIDogc3RyaW5nCiAgICA+CiAgICAKICAgIGxldCBzb3VuZCAoZCA6IGR1Y2spID0gcHJpbnRfZW5kbGluZSBkI3F1YWNrCiAgZW5kCgpsZXQgXyA9CiAgbGV0IGR1Y2tzID0gWwogICAgRHVja190YWxlcy5odWV5IDsKICAgIER1Y2tfdGFsZXMuZGV3ZXkgOwogICAgRHVja190YWxlcy5sb3VpZSA7CiAgICBEaXNuZXkuZG9uYWxkX2R1Y2sKICBdIGluCiAgTGlzdC5pdGVyIER1Y2tzX2NsaWVudC5zb3VuZCBkdWNrcwo=