J - это фантастический язык программирования, который я решил изучить. В качестве простого упражнения я решил подражать диапазону. Существует встроенная функция i.
, которая создает диапазон 0..i-1
. Используя некоторые математические, у меня есть, что это диапазон между a
и b
:Создание глагола диапазона в J
a + i. (b - a - 1)
Успех! Я думал. Теперь перед мной поставлена «простая» задача преобразования в глагол. Это моя проблема сейчас. У меня есть a
(левый аргумент), который вызывается с обеих сторон глагола +
. Я думал об использовании вызова, но я не уверен, как заставить его работать.
Итак, мой вопрос: как преобразовать выражение формы a f (a g b)
или, точнее, a f (a g b h c)
(и аналогичные формы) в чистый глагол? Я не хочу использовать явные аргументы, для чего это забавно? ;)
EDIT Мое решение, как так:
range =: [(+i.)>:@-~
Приятная работа с этим решением, хотя на самом деле вам не нужна ~ с +, потому что + рефлексивно. range =: [(+ i.)>: @ - ~ должен работать так же хорошо. – bob
@bob, так оно и есть! Благодаря! –