还在J的学习过程中……现在要解决的问题是表示和的平方减去自然整数的平方和。
天真的解决方案是
(*:+/>:i.100) - (+/*:>:i.100)
现在,我想使用一个 fork 来>:i.100
只写一次列表。我的叉子应该:
h
/ \
f g
| |
x x
其中f
是g
和的平方, 是平方和,h
是负数。于是,我天真地写道:
((*:+/) - (+/*:)) >:i.100
但它给了我一个域错误。为什么?我也试过:
(+/ (*: - +/) :*) >: i.100
而这一次,它给了我一长串数字......我猜它与@
连词有关,但我仍然不知道 At 是做什么的......继续我的探索,我终于得到了
((+/*+/) - +/@:*:) >:i.100
但我不喜欢我手动计算平方而不是使用*:
运算符这一事实,而且我真的不明白为什么我需要合@:
取。有人可以告诉我这个问题吗?