考虑:
x =. 0 1 2 3 4 1 3 4 99
v =. [ {.~ (>: @ i.&1 @ (#@~. = #\))
v x NB. => 0 1 2 3 4 1
Run Code Online (Sandbox Code Playgroud)
行为是正确的.但正如你所看到的,v
是可耻的冗长.有更好的解决方案吗?
你想要monad ~:
(nub筛):
v =: {.~ 1 + 0 i.~ ~:
x =: 0 1 2 3 4 1 3 4 99
v x
0 1 2 3 4 1
Run Code Online (Sandbox Code Playgroud)
代码审查:
#\
代替i.@#
.它太可爱了,难以维护,并且不会被特殊代码优化器识别.x
,y
,u
,v
,m
,或n
(在一个明确的背景下除特殊情况外,并始终在本地).