CBS-beta

Beta-release of the CBS framework

CBS-beta on GitHubplancomps.github.io/CBS-beta/

Funcon Reuse in Languages-beta

Currently, Funcons-beta includes 387 funcons (including types, datatypes, and entities, but not aliases). Of these, 192 are used in language specifications in Languages-beta. The number of funcons used for each language is as follows:

IMP SIMPLE MiniJava SL OC-L
29 62 70 71 160

The definitions of some of the used funcons reference other funcons, which are not counted. The remaining funcons have either been used in previous language specifications, or are expected to be useful in future specifications.

The following tables show which language specifications directly use each funcon, thereby exhibiting the degree of funcon reuse in Languages-beta.

Computations

Types of computation

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Funcon computation-types  

Normal computation

Flowing

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Funcon left-to-right l-to-r
          Funcon right-to-left r-to-l
X X X X X Funcon sequential seq
  X   X X Funcon effect  
          Funcon choice  
X X X X X Funcon if-true-else if-else
X X X X X Funcon while-true while
          Funcon do-while-true do-while
          Funcon interleave  
          Datatype yielding  
          Funcon signal  
          Funcon yielded  
          Funcon yield  
          Funcon yield-on-value  
          Funcon yield-on-abrupt  
          Funcon atomic  

Giving

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Entity given-value  
X X X X X Funcon initialise-giving  
  X X X X Funcon give  
  X X X X Funcon given  
          Funcon no-given  
          Funcon left-to-right-map  
          Funcon interleave-map  
  X       Funcon left-to-right-repeat  
    X     Funcon interleave-repeat  
          Funcon left-to-right-filter  
          Funcon interleave-filter  
          Funcon fold-left  
          Funcon fold-right  

Binding

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
X X X X X Type environments envs
X X X X X Datatype identifiers ids
          Funcon identifier-tagged id-tagged
          Funcon fresh-identifier  
          Entity environment env
X X X X X Funcon initialise-binding  
X X   X   Funcon bind-value bind
          Funcon unbind  
          Funcon bound-directly  
X X X X X Funcon bound-value bound
      X   Funcon closed  
X X X X X Funcon scope  
        X Funcon accumulate  
X X X X X Funcon collateral  
          Funcon bind-recursively  
    X   X Funcon recursive  

Generating

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Type atoms  
          Entity used-atom-set  
          Funcon initialise-generating  
    X X   Funcon fresh-atom  
          Funcon use-atom-not-in  

Storing

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype locations locs
          Type stores  
          Entity store  
X X X X X Funcon initialise-storing  
          Funcon store-clear  
  X X X X Datatype variables vars
          Funcon variable var
  X       Funcon allocate-variable alloc
          Funcon recycle-variables recycle
          Funcon initialise-variable init
X X X X X Funcon allocate-initialised-variable alloc-init
X X X X X Funcon assign  
X X X X X Funcon assigned  
          Funcon current-value  
          Funcon un-assign  
          Funcon structural-assign  
          Funcon structural-assigned  

Linking

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype links  
          Funcon initialise-linking  
          Funcon link  
          Funcon fresh-link  
          Funcon fresh-initialised-link fresh-init-link
          Funcon set-link  
          Funcon follow-if-link  

Interacting

Input
IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Entity standard-in  
  X   X X Funcon read  
Output
IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Entity standard-out  
  X X X X Funcon print  

Abnormal computation

Terminating abruptly

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Funcon stuck  
          Entity abrupted  
      X   Funcon finalise-abrupting  
          Funcon abrupt  
          Funcon handle-abrupt  
          Funcon finally  

Failing

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype failing  
          Funcon failed  
X X X   X Funcon finalise-failing  
      X X Funcon fail  
      X X Funcon else  
          Funcon else-choice  
X X X X X Funcon checked  
        X Funcon check-true  

Throwing

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype throwing  
          Funcon thrown  
  X     X Funcon finalise-throwing  
  X     X Funcon throw  
  X     X Funcon handle-thrown  
          Funcon handle-recursively  
          Funcon catch-else-throw  

Returning

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype returning  
          Funcon returned  
          Funcon finalise-returning  
  X   X   Funcon return  
  X   X   Funcon handle-return  

Breaking

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype breaking  
          Funcon broken  
          Funcon finalise-breaking  
      X   Funcon break  
      X   Funcon handle-break  

Continuing

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype continuing  
          Funcon continued  
          Funcon finalise-continuing  
      X   Funcon continue  
      X   Funcon handle-continue  

Controlling

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype continuations  
          Funcon continuation  
          Entity plug-signal  
          Funcon hole  
          Funcon resume-continuation  
          Entity control-signal  
          Funcon control  
          Funcon delimit-current-continuation delimit-cc

Values

Value Types

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
  X   X X Type values vals
    X     Type value-types types
          Type empty-type  
        X Funcon is-in-type is
          Funcon is-value is-val
        X Funcon when-true when
      X   Type cast-to-type cast
        X Type ground-values ground-vals
  X   X X Funcon is-equal is-eq

Primitive values

Booleans

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
X   X X X Datatype booleans bools
X X X X X Funcon true  
X X X X X Funcon false  
X X X X X Funcon not  
          Funcon implies  
        X Funcon and  
        X Funcon or  
          Funcon exclusive-or xor

Integers

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
X   X X X Type integers ints
          Type integers-from from
          Type integers-up-to up-to
        X Type bounded-integers bounded-ints
          Type positive-integers pos-ints
          Type negative-integers neg-ints
  X     X Type natural-numbers nats
        X Funcon natural-successor nat-succ
          Funcon natural-predecessor nat-pred
X X X X X Funcon integer-add int-add
  X X X X Funcon integer-subtract int-sub
  X X X X Funcon integer-multiply int-mul
X X   X X Funcon integer-divide int-div
  X     X Funcon integer-modulo int-mod
          Funcon integer-power int-pow
        X Funcon integer-absolute-value int-abs
X X   X X Funcon integer-negate int-neg
  X X X X Funcon integer-is-less is-less
X X   X X Funcon integer-is-less-or-equal is-less-or-equal
  X   X X Funcon integer-is-greater is-greater
  X   X X Funcon integer-is-greater-or-equal is-greater-or-equal
          Funcon binary-natural binary
          Funcon octal-natural octal
X X X X X Funcon decimal-natural decimal
          Funcon hexadecimal-natural hexadecimal
        X Funcon integer-sequence  

Floats

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
        X Datatype float-formats  
          Funcon binary32  
        X Funcon binary64  
          Funcon binary128  
          Funcon decimal64  
          Funcon decimal128  
        X Type floats  
          Funcon float  
          Funcon quiet-not-a-number qNaN
          Funcon signaling-not-a-number sNaN
          Funcon positive-infinity pos-inf
          Funcon negative-infinity neg-inf
          Funcon float-convert  
          Funcon float-equal  
          Funcon float-is-less  
          Funcon float-is-less-or-equal  
          Funcon float-is-greater  
          Funcon float-is-greater-or-equal  
        X Funcon float-negate  
        X Funcon float-absolute-value  
        X Funcon float-add  
        X Funcon float-subtract  
        X Funcon float-multiply  
          Funcon float-multiply-add  
        X Funcon float-divide  
        X Funcon float-remainder  
        X Funcon float-sqrt  
          Funcon float-integer-power  
        X Funcon float-float-power  
          Funcon float-round-ties-to-even  
          Funcon float-round-ties-to-infinity  
        X Funcon float-floor  
        X Funcon float-ceiling  
        X Funcon float-truncate  
          Funcon float-pi  
          Funcon float-e  
        X Funcon float-log  
        X Funcon float-log10  
        X Funcon float-exp  
        X Funcon float-sin  
        X Funcon float-cos  
        X Funcon float-tan  
        X Funcon float-asin  
        X Funcon float-acos  
        X Funcon float-atan  
        X Funcon float-sinh  
        X Funcon float-cosh  
        X Funcon float-tanh  
          Funcon float-asinh  
          Funcon float-acosh  
          Funcon float-atanh  
        X Funcon float-atan2  

Characters

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
        X Type characters chars
          Datatype unicode-characters unicode-chars
          Type unicode-points  
        X Funcon unicode-character unicode-char
          Funcon unicode-point unicode
          Type basic-multilingual-plane-characters bmp-chars
          Type basic-multilingual-plane-points  
          Type iso-latin-1-characters latin-1-chars
          Type iso-latin-1-points  
          Type ascii-characters ascii-chars
          Type ascii-points  
        X Type ascii-character ascii-char
          Funcon utf-8  
          Funcon utf-16  
          Funcon utf-32  
        X Funcon backspace  
        X Funcon horizontal-tab  
        X Funcon line-feed  
          Funcon form-feed  
        X Funcon carriage-return  
          Funcon double-quote  
          Funcon single-quote  
        X Funcon backslash  

The null value

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
X X X X X Datatype null-type  
X X X X X Funcon null-value null

Composite values

Sequences of values

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
  X X   X Funcon length  
  X X   X Funcon index  
          Funcon is-in  
    X     Funcon first  
          Funcon second  
          Funcon third  
          Funcon first-n  
          Funcon drop-first-n  
        X Funcon reverse  
        X Funcon n-of  
        X Funcon intersperse  

Datatypes

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Funcon datatype-value  
          Funcon datatype-value-id  
          Funcon datatype-value-elements  

Tuples

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
  X X   X Datatype tuples  
    X   X Funcon tuple-elements  
          Funcon tuple-zip  

Lists

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
      X X Datatype lists  
        X Funcon list  
        X Funcon list-elements  
      X X Funcon list-nil nil
      X X Funcon list-cons cons
      X X Funcon list-head head
      X X Funcon list-tail tail
        X Funcon list-length  
        X Funcon list-append  

Strings

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
      X X Type strings  
          Funcon string  
      X X Funcon string-append  
    X X X Funcon to-string  

Vectors

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
  X X   X Datatype vectors  
  X X   X Funcon vector  
  X X   X Funcon vector-elements  

Bits and bit vectors

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Type bits  
        X Datatype bit-vectors  
          Funcon bit-vector  
          Type bytes octets
        X Funcon bit-vector-not  
        X Funcon bit-vector-and  
        X Funcon bit-vector-or  
        X Funcon bit-vector-xor  
        X Funcon bit-vector-shift-left  
        X Funcon bit-vector-logical-shift-right  
        X Funcon bit-vector-arithmetic-shift-right  
        X Funcon integer-to-bit-vector  
        X Funcon bit-vector-to-integer  
          Funcon bit-vector-to-natural  
          Funcon unsigned-bit-vector-maximum  
        X Funcon signed-bit-vector-maximum  
        X Funcon signed-bit-vector-minimum  
          Funcon is-in-signed-bit-vector  
          Funcon is-in-unsigned-bit-vector  

Sets

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
    X     Type sets  
        X Funcon set  
        X Funcon set-elements  
        X Funcon is-in-set  
          Funcon is-subset  
          Funcon set-insert  
    X     Funcon set-unite  
          Funcon set-intersect  
          Funcon set-difference  
          Funcon set-size  
          Funcon some-element  
          Funcon element-not-in  

Maps

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
        X Type maps  
    X X X Funcon map  
        X Funcon map-elements  
    X X X Funcon map-lookup lookup
        X Funcon map-domain dom
      X X Funcon map-override  
        X Funcon map-unite  
          Funcon map-delete  

Multisets (bags)

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Type multisets  
          Funcon multiset  
          Funcon multiset-elements  
          Funcon multiset-occurrences  
          Funcon multiset-insert  
          Funcon multiset-delete  
          Funcon is-submultiset  

Trees

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype trees  
          Funcon tree  
          Funcon tree-root-value  
          Funcon tree-branch-sequence  
          Funcon single-branching-sequence  
          Funcon forest-root-value-sequence  
          Funcon forest-branch-sequence  
          Funcon forest-value-sequence  

Graphs

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Type directed-graphs  
          Funcon is-cyclic  
          Funcon topological-sort  

References and pointers

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
    X     Datatype references  
    X     Funcon reference  
    X     Type pointers  
    X     Funcon dereference  

Records

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
        X Datatype records  
        X Funcon record  
        X Funcon record-map  
        X Funcon record-select  

Variants

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
        X Datatype variants  
        X Funcon variant  
          Funcon variant-id  
          Funcon variant-value  

Classes

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype classes  
    X     Funcon class  
    X     Funcon class-instantiator  
          Funcon class-feature-map  
          Funcon class-superclass-name-sequence  
          Funcon class-name-tree  
          Funcon is-subclass-name  
    X     Funcon class-name-single-inheritance-feature-map  

Objects

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
    X X   Datatype objects  
    X X   Funcon object  
          Funcon object-identity  
    X     Funcon object-class-name  
      X   Funcon object-feature-map  
          Funcon object-subobject-sequence  
          Funcon object-tree  
    X     Funcon object-single-inheritance-feature-map  

Abstraction values

Generic abstractions

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Type abstractions  
    X   X Funcon abstraction  
  X X X X Funcon closure  
          Funcon enact  

Thunks

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
          Datatype thunks  
    X     Funcon thunk  
    X     Funcon force  

Functions

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
  X X X X Datatype functions  
  X X X X Funcon function  
  X X X X Funcon apply  
          Funcon supply  
          Funcon compose  
          Funcon uncurry  
        X Funcon curry  
          Funcon partial-apply  

Patterns

IMP SIMPLE MiniJava SL OC-L Kind Name Alias
  X X   X Datatype patterns  
  X X   X Funcon pattern  
        X Funcon pattern-any  
        X Funcon pattern-bind  
          Funcon pattern-type  
        X Funcon pattern-else  
        X Funcon pattern-unite  
  X X   X Funcon match  
        X Funcon match-loosely  
        X Funcon case-match  
          Funcon case-match-loosely  
          Funcon case-variant-value