Janet 1.38.0-73334f3 Documentation
(Other Versions:
1.37.1
1.36.0
1.35.0
1.34.0
1.31.0
1.29.1
1.28.0
1.27.0
1.26.0
1.25.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.1
1.17.1
1.16.1
1.15.0
1.13.1
1.12.2
1.11.1
1.10.1
1.9.1
1.8.1
1.7.0
1.6.0
1.5.1
1.5.0
1.4.0
1.3.1
)
Infix Syntax
A macro for infix syntax in Janet. Useful for math.
($$ a + b ** 2) ---> (+ a (math/pow b 2))
($$ (a + b) ** 2) ---> (math/pow (+ a b) 2)
($$ y[2] + y[3]) ---> (+ (in y 2) (in y 3))
($$ a > b and ,(good? z)) ---> (and (> a b) (good? z))
Syntax is as follows:
Binary operators <<, >>, >>>, =, !=, <, <=, >, >=, &, ^, bor, band, and, or, +, -, *, /, %, ** are supported. Operator precedence is in the `precedence table below (higher means more tightly binding). All operators are left associative except ** (math/pow), which is right associative.
Unary prefix operators !, -, bnot, not, ++, -- are supported. No unary postfix operators are supported.
Square brackets can be used for indexing.
Normal parentheses are used for making subgroups
You can "escape" infix syntax use a quote or unquote (comma)
Precedence Table
(def- precedence
{'>> 9
'<< 9
'>>> 9
'= 8
'!= 8
'not= 8
'< 8
'<= 8
'>= 8
'> 8
'& 7
'^ 6
'bor 5
'band 5
'and 4
'or 3
'+ 10
'- 10
'* 20
'/ 20
'% 20
'** 30
'! 40
'not 40
'bnot 40
'++ 40
'-- 40})
Index
infix/$$ macro source
($$ & body)
Use infix syntax for writing expressions in a more familiar manner. Useful for writing mathematic expressions.