Last change
on this file since 27284 was
27284,
checked in by Ivan Raikov, 9 years ago
|
9ML-toolkit: added missing NineMLrandom module
|
File size:
1.3 KB
|
Line | |
---|
1 | |
---|
2 | (define (Random:module-initialize module-name enter-module find-module eval-env) |
---|
3 | |
---|
4 | (define path-real (Pident (ident-create "real"))) |
---|
5 | (define real-type (Tcon (Tpath path-real) '())) |
---|
6 | |
---|
7 | (define-values (type-variables reset-type-variables |
---|
8 | find-type-variable |
---|
9 | begin-def end-def newvar generalize |
---|
10 | make-deftype make-valtype make-kind |
---|
11 | binop ternop path-star path-list path-arrow |
---|
12 | star-type list-type arrow-type label-type string-type bot-type |
---|
13 | ) |
---|
14 | (core-utils)) |
---|
15 | |
---|
16 | (let ( |
---|
17 | (sig |
---|
18 | (append |
---|
19 | |
---|
20 | (map |
---|
21 | (lambda (name) |
---|
22 | (Value_sig (ident-create name) |
---|
23 | (make-valtype '() (arrow-type real-type real-type)))) |
---|
24 | '("exponential")) |
---|
25 | |
---|
26 | (map |
---|
27 | (lambda (name) |
---|
28 | (Value_sig (ident-create name) |
---|
29 | (make-valtype '() (arrow-type real-type (arrow-type real-type real-type))))) |
---|
30 | '("uniform" "normal")) |
---|
31 | |
---|
32 | )) |
---|
33 | |
---|
34 | (struct |
---|
35 | (append |
---|
36 | |
---|
37 | (map (lambda (name) (datacon 'random name 2)) |
---|
38 | '(uniform normal) |
---|
39 | ) |
---|
40 | |
---|
41 | (map (lambda (name) (datacon 'random name 1)) |
---|
42 | '(exponential) |
---|
43 | ) |
---|
44 | |
---|
45 | )) |
---|
46 | ) |
---|
47 | |
---|
48 | (let* ((modname (ident-create module-name)) |
---|
49 | (msig (Signature sig)) |
---|
50 | (mdef (Module_def modname (Structure struct)))) |
---|
51 | (enter-module modname msig) |
---|
52 | (eval-env (mod-eval-cbv (eval-env) (list mdef))) |
---|
53 | ) |
---|
54 | )) |
---|
55 | |
---|
56 | |
---|
57 | |
---|
58 | |
---|
Note: See
TracBrowser
for help on using the repository browser.