Package: src/packages/rlang.fdoc
R language DSSL¶
key | file |
---|---|
rcore.flx | share/lib/rlang/rcore.flx |
rtest.flx | $PWD/rtest.flx |
R core¶
Work in progress implementing R interpreter.
//[rtest.flx]
library Rlang {
class Rcore {
typedef Rtype = (`Rlogical_t| `Rinteger_t | `Rdouble_t | `Rcomplex_t | `Rcharacter_t);
instance Str[Rtype] {
fun str (x:Rtype) : string => match x with
| `Rlogical_t () => "logical"
| `Rinteger_t () => "integer"
| `Rdouble_t () => "double"
| `Rcomplex_t () => "complex"
| `Rcharacter_t () => "character"
;
}
typedef Rlogical_v = ( `Rtrue | `Rfalse | `Rlogical_NA );
typedef Rinteger_v = ( `Rinteger of int | `Rinteger_NA );
typedef Rdouble_v = ( `Rdouble of double | `Rdouble_NA );
typedef Rcomplex_v = ( `Rcomplex of dcomplex | `Rcomplex_NA);
typedef Rcharacter_v = ( `Rcharacter of string | `Rcharacter_NA);
typedef Rscalar_v = ( Rlogical_v | Rinteger_v | Rdouble_v | Rcomplex_v | Rcharacter_v);
typedef Rbasic_vector_v = (
`Rlogical_x of varray[Rlogical_v] |
`Rinteger_x of varray[Rinteger_v] |
`Rdouble_x of varray[Rdouble_v] |
`Rcomplex_x of varray[Rcomplex_v] |
`Rcharacter_x of varray[Rcharacter_v] |
`Rraw_x of varray[byte]
);
typedef Robject_v = (
`Rnull |
Rbasic_vector_v |
`Rlist of varray[Robject_v] | // heterogenous
`Rsymbol of string | // variable name
`Rexternal_pointer of address
);
}}
include "rlang/rcore";
open Rlang;
open Rcore;
println$ "Hello R";
var x = #`Rlogical_t :>> Rtype;
println$ x;