我试图这样做20 + 10:
(10&+~) 20
Run Code Online (Sandbox Code Playgroud)
然后我意识到副词&有"短右手".所以它应该是
(10&(+~)) 20
Run Code Online (Sandbox Code Playgroud)
这给了我正确答案:30.但出于好奇心
(10&+~) 20
Run Code Online (Sandbox Code Playgroud)
给出220.为什么?
更奇怪的是,
(10&+~) 0.1
Run Code Online (Sandbox Code Playgroud)
给出"域错误"
(10&+~) 20 是10 (&+~) 20.这看起来像叉子或钩子,但它不是因为~并且&是特殊的雪花.~必须首先处理,所以你的表达是10 (&+)~ 20.现在,&+不能自立,所以~必须在这里反思.你的表达现在是
20 (10 (&+)) 20
Run Code Online (Sandbox Code Playgroud)
现在导致成键的特殊的二元情况下&变成动力(^:) x m&v y ? m&v^:x y.所以,最后,表达式变为:
(10&+)^:20 ] 20
220
Run Code Online (Sandbox Code Playgroud)
显然,你不能使用非整数的幂,所以(10&+~)0.1是一个域错误.