العرضar

عقد

Translation status: العربية reader-locale proof. Term names and code fences follow the ar pack; supporting prose may still be English.

Declares a behavioral contract with method signatures.

Aliases: interface

Syntax: عقد <name> [<type-params>] <block>

Category#

type

Examples#

radix/corpus/implendum/implendum.fab (canonical · keyword)#

Declares a behavioral contract with method signatures.

# =============================================================================
# عقد — Declares a behavioral contract with method signatures
# =============================================================================
#
# What this teaches:
#   • Declares a behavioral contract with method signatures.
#   • Related keywords: صنف, حقق
#
# Common mistakes:
#   • Declaring a `صنف حقق Implendum` without implementing all required methods — every method signature in the عقد must have a body in the صنف.
#
# See also: صنف, حقق
# =============================================================================

# عقد definition and implementation
#
# عقد Nomen { دالة opus() → <type> }
# صنف Nomen حقق Implendum { ... }
#
# GRAMMAR:
#   implendumDecl :← 'عقد' ident '{' methodSig* '}'
#   genusDecl     :← 'صنف' ident 'حقق' ident '{' ... '}'
#
# EXPECTED OUTPUT:
#   circulus radius: 25
#   quadratum latus: 15

interface Figurabile {
    fn depinge() → void
}

class Circulus implements Figurabile {
    var int radius = 10

    fn depinge() → void {
        print "circulus radius: §"(self.radius)
    }
}

class Quadratum implements Figurabile {
    var int latus = 5

    fn depinge() → void {
        print "quadratum latus: §"(self.latus)
    }
}

main {
    const Circulus circulus ← Circulus { radius = 25 }
    const Quadratum quadratum ← Quadratum { latus = 15 }
    circulus.depinge()
    quadratum.depinge()
}

Expected output:

circulus radius: 25
quadratum latus: 15