Wrapping J's Неблагоприятный примитив (: :) - PullRequest
2 голосов
/ 17 января 2011

Обычно я буду использовать примитив :: таким образом:

SomeVariable"_ :: ] DefaultValue

Я ищу способ обернуть этот уродливый рыжик. Я пытаюсь объяснить это. Обычно это было бы с молчаливым определением. Это, например:

default =: 13 : 'x"_ :: ] y'

терпит неудачу с треском. Потому что, конечно же, в этом контексте:

SomeVariable default DefaultValue

если SomeVariable не существует, J выдаст ошибку валентности.

Итак, как вы можете обернуть ::?

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Вы действительно можете обернуть ::, но если вы хотите дать ему аргумент глагола, вам нужно разобраться с синтаксическими проблемами.

Например, вы можете использовать наречие:

fault=:1 :0
  u"_ :: ]
)

Или вы можете преобразовать глагол, которым вы манипулируете, в герунду и передать его внутрь (но это было бы ужасно, поэтому я не думаю, что вы этого хотите).

0 голосов
/ 21 сентября 2015

использую,

ORdef_z_ =: ".@[^:(_1< 4!:0@<@[)

 'asd' ORdef 3  NB. asd not assigned, returns right.
3
 asd =. 'asd' ORdef 3
asd=.'asd' ORdef 22  NB. will return 3 due to previous assignment
asd

3

...