[英]Write `4 : '$ x (<") y'` tacitly
怎么默寫frame
函數? (來自“學習J”第7章)
我正在使用 Ch 8 中的fxgy = xf@:gy
組合方案,但它不起作用。 我的猜測是因為<"
沒有自然排名?
x=.1
y=.i.2 3 4
f=.$
g=.<"
frame_e=.4 :'f x g y'
frame_t=.f@:g
x frame_e y NB. -> 2 3, which is the x-frame of y
x frame_t y NB. -> domain error
NB. No natural rank
g b.0 NB. -> syntax error
0 g b.0 NB. -> 0 0 0
我確認該模式在其他功能上按我的預期工作。
x=.1
y=.i.2 3 4
f=.+/
g=.*
f x g y NB. -> equiv of 12+2*i.3 4
x f@:g y NB. -> same
默認情況下,我會使用
framet=. {. $
2 framet i. 2 3 4
2 3
但這並沒有真正觸及你問題的根源,是嗎?
問題實際上是g
的定義方式:
g=.<"
這不會使g
成為動詞,而是副詞。 它確實使用顯式定義中的x
來創建動詞,但它需要在使用該動詞計算 y 之前執行此操作。 據我所知,J 不允許您暫存這些流程。 如您所見,當f
和g
實際上是動詞時,該模式確實有效。
我發現默認編程很優雅,但它在某些方面可能會更慢,而且在某些方面它是有限的。
我希望有人能提供更好的答案,以便我也可以學習。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.