rpl 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,105 +10,105 @@ module RplLang
10
10
 
11
11
  category = 'Logs on reals and complexes'
12
12
 
13
- @dictionary.add_word( ['ℇ', 'e'],
14
- category,
15
- '( … -- ℇ ) push ℇ',
16
- proc do
17
- @stack << Types.new_object( RplNumeric, BigMath.E( RplNumeric.precision ) )
18
- end )
19
-
20
- # @dictionary.add_word( ['ln'],
13
+ @dictionary.add_word!( ['ℇ', 'e'],
14
+ category,
15
+ '( … -- ℇ ) push ℇ',
16
+ proc do
17
+ @stack << Types.new_object( RplNumeric, BigMath.E( RplNumeric.precision ) )
18
+ end )
19
+
20
+ # @dictionary.add_word!( ['ln'],
21
21
  # category,
22
22
  # 'logarithm base e',
23
23
  # proc do
24
24
 
25
25
  # end )
26
26
 
27
- # @dictionary.add_word( ['lnp1'],
27
+ # @dictionary.add_word!( ['lnp1'],
28
28
  # category,
29
29
  # 'ln(1+x) which is useful when x is close to 0',
30
30
  # proc do
31
31
 
32
32
  # end )
33
33
 
34
- # @dictionary.add_word( ['exp'],
34
+ # @dictionary.add_word!( ['exp'],
35
35
  # category,
36
36
  # 'exponential',
37
37
  # proc do
38
38
 
39
39
  # end )
40
40
 
41
- # @dictionary.add_word( ['expm'],
41
+ # @dictionary.add_word!( ['expm'],
42
42
  # category,
43
43
  # 'exp(x)-1 which is useful when x is close to 0',
44
44
  # proc do
45
45
 
46
46
  # end )
47
47
 
48
- # @dictionary.add_word( ['log10'],
48
+ # @dictionary.add_word!( ['log10'],
49
49
  # category,
50
50
  # 'logarithm base 10',
51
51
  # proc do
52
52
 
53
53
  # end )
54
54
 
55
- # @dictionary.add_word( ['alog10'],
55
+ # @dictionary.add_word!( ['alog10'],
56
56
  # category,
57
57
  # 'exponential base 10',
58
58
  # proc do
59
59
 
60
60
  # end )
61
61
 
62
- # @dictionary.add_word( ['log2'],
62
+ # @dictionary.add_word!( ['log2'],
63
63
  # category,
64
64
  # 'logarithm base 2',
65
65
  # proc do
66
66
 
67
67
  # end )
68
68
 
69
- # @dictionary.add_word( ['alog2'],
69
+ # @dictionary.add_word!( ['alog2'],
70
70
  # category,
71
71
  # 'exponential base 2',
72
72
  # proc do
73
73
 
74
74
  # end )
75
75
 
76
- # @dictionary.add_word( ['sinh'],
76
+ # @dictionary.add_word!( ['sinh'],
77
77
  # category,
78
78
  # 'hyperbolic sine',
79
79
  # proc do
80
80
 
81
81
  # end )
82
82
 
83
- # @dictionary.add_word( ['asinh'],
83
+ # @dictionary.add_word!( ['asinh'],
84
84
  # category,
85
85
  # 'inverse hyperbolic sine',
86
86
  # proc do
87
87
 
88
88
  # end )
89
89
 
90
- # @dictionary.add_word( ['cosh'],
90
+ # @dictionary.add_word!( ['cosh'],
91
91
  # category,
92
92
  # 'hyperbolic cosine',
93
93
  # proc do
94
94
 
95
95
  # end )
96
96
 
97
- # @dictionary.add_word( ['acosh'],
97
+ # @dictionary.add_word!( ['acosh'],
98
98
  # category,
99
99
  # 'inverse hyperbolic cosine',
100
100
  # proc do
101
101
 
102
102
  # end )
103
103
 
104
- # @dictionary.add_word( ['tanh'],
104
+ # @dictionary.add_word!( ['tanh'],
105
105
  # category,
106
106
  # 'hyperbolic tangent',
107
107
  # proc do
108
108
 
109
109
  # end )
110
110
 
111
- # @dictionary.add_word( ['atanh'],
111
+ # @dictionary.add_word!( ['atanh'],
112
112
  # category,
113
113
  # 'inverse hyperbolic tangent',
114
114
  # proc do
@@ -10,36 +10,36 @@ module RplLang
10
10
 
11
11
  category = 'Mode'
12
12
 
13
- @dictionary.add_word( ['prec'],
14
- category,
15
- '( a -- ) set precision to a',
16
- proc do
17
- args = stack_extract( [[RplNumeric]] )
13
+ @dictionary.add_word!( ['prec'],
14
+ category,
15
+ '( a -- ) set precision to a',
16
+ proc do
17
+ args = stack_extract( [[RplNumeric]] )
18
18
 
19
- RplNumeric.precision = args[0].value
20
- end )
21
- @dictionary.add_word( ['default'],
22
- category,
23
- '( -- ) set default precision',
24
- proc do
25
- RplNumeric.default_precision
26
- end )
27
- @dictionary.add_word( ['type'],
28
- category,
29
- '( a -- s ) type of a as a string',
30
- proc do
31
- args = stack_extract( [:any] )
19
+ RplNumeric.precision = args[0].value
20
+ end )
21
+ @dictionary.add_word!( ['default'],
22
+ category,
23
+ '( -- ) set default precision',
24
+ proc do
25
+ RplNumeric.default_precision
26
+ end )
27
+ @dictionary.add_word!( ['type'],
28
+ category,
29
+ '( a -- s ) type of a as a string',
30
+ proc do
31
+ args = stack_extract( [:any] )
32
32
 
33
- @stack << Types.new_object( RplString, "\"#{args[0].class.to_s[10..]}\"" )
34
- end )
33
+ @stack << Types.new_object( RplString, "\"#{args[0].class.to_s[10..]}\"" )
34
+ end )
35
35
 
36
- # @dictionary.add_word( ['std'],
36
+ # @dictionary.add_word!( ['std'],
37
37
  # proc { __todo } ) # standard floating numbers representation. ex: std
38
- # @dictionary.add_word( ['fix'],
38
+ # @dictionary.add_word!( ['fix'],
39
39
  # proc { __todo } ) # fixed point representation. ex: 6 fix
40
- # @dictionary.add_word( ['sci'],
40
+ # @dictionary.add_word!( ['sci'],
41
41
  # proc { __todo } ) # scientific floating point representation. ex: 20 sci
42
- # @dictionary.add_word( ['round'],
42
+ # @dictionary.add_word!( ['round'],
43
43
  # proc { __todo } ) # set float rounding mode. ex: ["nearest", "toward zero", "toward +inf", "toward -inf", "away from zero"] round
44
44
  end
45
45
  end
@@ -10,65 +10,65 @@ module RplLang
10
10
 
11
11
  category = 'Operations on complexes'
12
12
 
13
- @dictionary.add_word( ['re'],
14
- category,
15
- '( c -- n ) complex real part',
16
- proc do
17
- args = stack_extract( [[RplComplex]] )
18
-
19
- @stack << RplNumeric.new( args[0].value.real )
20
- end )
21
-
22
- @dictionary.add_word( ['im'],
23
- category,
24
- '( c -- n ) complex imaginary part',
25
- proc do
26
- args = stack_extract( [[RplComplex]] )
27
-
28
- @stack << RplNumeric.new( args[0].value.imaginary )
29
- end )
30
-
31
- @dictionary.add_word( ['conj'],
32
- category,
33
- '( c -- c ) complex conjugate',
34
- proc do
35
- args = stack_extract( [[RplComplex]] )
36
-
37
- @stack << RplComplex.new( args[0].value.conjugate )
38
- end )
39
-
40
- @dictionary.add_word( ['arg'],
41
- category,
42
- '( c -- n ) complex argument in radians',
43
- proc do
44
- args = stack_extract( [[RplComplex]] )
45
-
46
- @stack << RplNumeric.new( args[0].value.arg )
47
- end )
48
-
49
- @dictionary.add_word( ['c→r', 'c->r'],
50
- category,
51
- '( c -- n n ) transform a complex in 2 reals',
52
- Types.new_object( RplProgram, '« dup re swap im »' ) )
53
-
54
- @dictionary.add_word( ['r→c', 'r->c'],
55
- category,
56
- '( n n -- c ) transform 2 reals in a complex',
57
- proc do
58
- args = stack_extract( [[RplNumeric], [RplNumeric]] )
59
-
60
- complex_as_string = "(#{args[1].value}#{args[0].value.positive? ? '+' : ''}#{args[0].value}i)"
61
- @stack << RplComplex.new( complex_as_string )
62
- end )
63
-
64
- # @dictionary.add_word( ['p→r', 'p->r'],
13
+ @dictionary.add_word!( ['re'],
14
+ category,
15
+ '( c -- n ) complex real part',
16
+ proc do
17
+ args = stack_extract( [[RplComplex]] )
18
+
19
+ @stack << RplNumeric.new( args[0].value.real )
20
+ end )
21
+
22
+ @dictionary.add_word!( ['im'],
23
+ category,
24
+ '( c -- n ) complex imaginary part',
25
+ proc do
26
+ args = stack_extract( [[RplComplex]] )
27
+
28
+ @stack << RplNumeric.new( args[0].value.imaginary )
29
+ end )
30
+
31
+ @dictionary.add_word!( ['conj'],
32
+ category,
33
+ '( c -- c ) complex conjugate',
34
+ proc do
35
+ args = stack_extract( [[RplComplex]] )
36
+
37
+ @stack << RplComplex.new( args[0].value.conjugate )
38
+ end )
39
+
40
+ @dictionary.add_word!( ['arg'],
41
+ category,
42
+ '( c -- n ) complex argument in radians',
43
+ proc do
44
+ args = stack_extract( [[RplComplex]] )
45
+
46
+ @stack << RplNumeric.new( args[0].value.arg )
47
+ end )
48
+
49
+ @dictionary.add_word!( ['c→r', 'c->r'],
50
+ category,
51
+ '( c -- n n ) transform a complex in 2 reals',
52
+ Types.new_object( RplProgram, '« dup re swap im »' ) )
53
+
54
+ @dictionary.add_word!( ['r→c', 'r->c'],
55
+ category,
56
+ '( n n -- c ) transform 2 reals in a complex',
57
+ proc do
58
+ args = stack_extract( [[RplNumeric], [RplNumeric]] )
59
+
60
+ complex_as_string = "(#{args[1].value}#{args[0].value.positive? ? '+' : ''}#{args[0].value}i)"
61
+ @stack << RplComplex.new( complex_as_string )
62
+ end )
63
+
64
+ # @dictionary.add_word!( ['p→r', 'p->r'],
65
65
  # category,
66
66
  # 'cartesian to polar',
67
67
  # proc do
68
68
 
69
69
  # end )
70
70
 
71
- # @dictionary.add_word( ['r→p', 'r->p'],
71
+ # @dictionary.add_word!( ['r→p', 'r->p'],
72
72
  # category,
73
73
  # 'polar to cartesian',
74
74
  # proc do