Declares a behavioral contract with method signatures.
Aliases: interface
Syntax: implendum <name> [<type-params>] <block>
Category
type
Related
Examples
examples/corpus/implendum/implendum.fab (canonical · keyword)
Declares a behavioral contract with method signatures.
# implendum definition and implementation
#
# implendum Nomen { functio opus() → <type> }
# genus Nomen implet Implendum { ... }
#
# GRAMMAR:
# implendumDecl :← 'implendum' ident '{' methodSig* '}'
# genusDecl :← 'genus' ident 'implet' ident '{' ... '}'
#
# EXPECTED OUTPUT:
# circulus radius: 25
# quadratum latus: 15
implendum Figurabile {
functio depinge() → vacuum
}
genus Circulus implet Figurabile {
numerus radius = 10
functio depinge() {
nota "circulus radius: §"(ego.radius)
}
}
genus Quadratum implet Figurabile {
numerus latus = 5
functio depinge() {
nota "quadratum latus: §"(ego.latus)
}
}
incipit {
fixum _ circulus ← Circulus { radius = 25 }
fixum _ quadratum ← Quadratum { latus = 15 }
circulus.depinge()
quadratum.depinge()
}Expected output:
circulus radius: 25
quadratum latus: 15