--- layout: default title: "Linking" parent: Normal ancestor: Funcons-beta --- [Funcons-beta] : [Linking.cbs] ----------------------------- ### Linking
[
  Datatype links
  Funcon   initialise-linking
  Funcon   link
  Funcon   fresh-link
  Funcon   fresh-initialised-link    Alias fresh-init-link
  Funcon   set-link
  Funcon   follow-if-link
]
Meta-variables
  T <: values
Datatype
  links ::= link(_:variables)
Funcon
  initialise-linking(X:=>T) : =>T
   ~> initialise-storing(X)
initialise-linking(X) ensures that the entities used by the funcons for linking are properly initialised.
Funcon
  fresh-link(T) : =>links
    ~> link(allocate-variable(T))
Funcon
  fresh-initialised-link(T, V:T) : =>links
    ~> link(allocate-initialised-variable(T, V))
Alias
  fresh-init-link = fresh-initialised-link
Funcon
  set-link(_:links, _:T) : =>null-type
The value of a link can be set only once.
Rule
  set-link(link(Var:variables), V:T) ~> initialise-variable(Var, V)
Funcon
  follow-link(_:links) : =>values
Rule
  follow-link(link(Var:variables)) ~> assigned(Var)
Funcon
  follow-if-link(_:values) : =>values
If V is a link, follow-if-link(V) computes the set value, and otherwise it evaluates to V.
Rule
  follow-if-link(link(Var:variables)) ~> assigned(Var)
Rule
  follow-if-link(V:~links) ~> V
____ From the [PLanCompS Project] | [CBS-beta issues...] | [Suggest an improvement...] [Linking.cbs]: Linking.cbs "CBS SOURCE FILE" [Funcons-beta]: /CBS-beta/docs/Funcons-beta "FUNCONS-BETA" [Unstable-Funcons-beta]: /CBS-beta/docs/Unstable-Funcons-beta "UNSTABLE-FUNCONS-BETA" [Languages-beta]: /CBS-beta/docs/Languages-beta "LANGUAGES-BETA" [Unstable-Languages-beta]: /CBS-beta/docs/Unstable-Languages-beta "UNSTABLE-LANGUAGES-BETA" [CBS-beta]: /CBS-beta "CBS-BETA" [PLanCompS Project]: https://plancomps.github.io "PROGRAMMING LANGUAGE COMPONENTS AND SPECIFICATIONS PROJECT HOME PAGE" [CBS-beta issues...]: https://github.com/plancomps/CBS-beta/issues "CBS-BETA ISSUE REPORTS ON GITHUB" [Suggest an improvement...]: mailto:plancomps@gmail.com?Subject=CBS-beta%20-%20comment&Body=Re%3A%20CBS-beta%20specification%20at%20Computations/Normal/Linking/Linking.cbs%0A%0AComment/Query/Issue/Suggestion%3A%0A%0A%0ASignature%3A%0A "GENERATE AN EMAIL TEMPLATE"