Ну, здесь есть немного, чтобы распаковать то, что вы ожидаете. Давайте начнем с
m=:234 NB. m is the integer 234
+/ m NB. +/ sums across the items - only item is 234
234
*/ m NB. */ product across the items - only item is 234
234
так что, похоже, существует путаница между цифрами целого числа 234, которое будет равно 2 3 4, и тем фактом, что 234 является атомом, который имеет только один элемент со значением 234.
Переходя от этого, вы можете деконструировать свое целое число, используя 10 & #. ^: _1
, которое состоит из инверсии (^:_1
) от Base (#.
) с левым аргументом 10
, который позволяет выполнить разбиение в базе 10
. Способ J инвертировать примитив состоит в том, чтобы использовать соединение Power (^:
), возведенное в отрицательное значение 1 (_1
)
splitFunction =: 10 & #.^:_1
concatenateFunction =: 10 & #.
splitFunction 234
2 3 4
+/ splitFunction 234
9
*/ splitFunction 234
24
|. splitFunction 234
4 3 2
concatenateFunction 2 3 4
234
concatenateFunction splitFunction 234
234
Я думаю, что это будет делать то, что вы хотите, но вы можете потратить немного больше времени на размышления о том, что вы ожидаете от +/ 234
и будет ли это полезным поведением.