File: Parameters.hs

package info (click to toggle)
bali-phy 3.4%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 10,608 kB
  • sloc: cpp: 67,094; xml: 4,074; perl: 3,715; haskell: 1,861; yacc: 1,067; python: 555; lex: 528; sh: 259; makefile: 20
file content (55 lines) | stat: -rw-r--r-- 2,434 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
module Parameters where  

import Range

builtin builtin_set_modifiable_value 3 "set_modifiable_value" "Modifiables"
builtin is_changeable 1 "is_changeable" "Modifiables"
builtin is_modifiable 1 "is_modifiable" "Modifiables"
builtin get_modifiable_index 1 "get_modifiable_index" "Modifiables"
builtin builtin_new_modifiable 1 "new_modifiable" "Modifiables"
builtin builtin_new_random_modifiable 4 "new_random_modifiable" "Modifiables"
builtin evaluate 2 "evaluate" "Modifiables"
builtin get_modifiable_value 2 "get_modifiable_value" "Modifiables"
builtin builtin_add_parameter 2 "add_parameter" "Modifiables"
builtin builtin_register_prior 1 "register_prior" "Modifiables"
builtin builtin_register_likelihood 1 "register_likelihood" "Modifiables"

add_parameter name x = IOAction2 builtin_add_parameter (listToString name) x

register_prior pr = IOAction1 builtin_register_prior pr
register_likelihood pr = IOAction1 builtin_register_likelihood pr

new_random_modifiable range value rate = IOAction4 builtin_new_random_modifiable range (c_range range) value rate

c_range (OpenInterval a b) = getBounds (OpenInterval a b)
c_range (IntegerInterval a b) = getIntegerBounds (IntegerInterval a b)
c_range r = r

new_modifiable = IOAction1 builtin_new_modifiable ()

new_modifiable_list [] = return []
new_modifiable_list (h:t) = do m <- h
                               ms <- new_modifiable_list t
                               return (m:ms) 

set_modifiable_value token m v = IOAction3 builtin_set_modifiable_value token m v

set_parameter_value' token (p:ps) (v:vs) = do set_parameter_value token p v
                                              set_parameter_value token ps vs
set_parameter_value' token [] [] = return ()  

set_parameter_value token p v = if (is_modifiable p) 
                                then set_modifiable_value token p v 
                                else set_parameter_value' token p v

set_parameter_value_' token (p:ps) (v:vs) = do set_parameter_value_ token p (evaluate token v)
                                               set_parameter_value_ token ps (evaluate token vs)

set_parameter_value_' token [] [] = return ()  

set_parameter_value_ token p v = if (is_modifiable p) 
                                 then set_modifiable_value token p v
                                 else set_parameter_value_' token p v

get_modifiable_result token m = evaluate token (get_modifiable_value token m)