2015-03-24 5 views
2

я написал свою собственную версию функции экспоненциальной (^), который прекрасно работает для простых скаляров:отображения (используются определенным) над списком

3: (! у & ^%) «+/I.50'

Это не работает над списком, так что я думал о его модификации с "0

3:«+/(у"! 0 & ^%) I.50'

Это работает над списком, но дает неправильные ответы. возникает

Два вопроса:

1) Учитывая мое использование «0 не работает, есть один, который делает

2) Если у меня нет доступа к функциональному определению, как это? , что это лучший способ, чтобы применить его к отдельным элементам массива

+0

Каких результатов вы ожидаете? '^ 10' дает' 22026.5', тогда как '3: '+/(y & ^%!) I.50' 10' дает' 27.1828'. – hoosierEE

+0

3: '+/(y & ^%!) I.50' 10 дает 22026.5, что, если мои глаза не смешно, такая же копия, как ваша? – user1202733

+0

К сожалению, вы правы. Версия с '' 0' дает '27.1828' – hoosierEE

ответ

1

вы должны применить ранг конъюнкции "0 по функции, которую вы хотите отобразить (y&^%!) вместо аргумента y:

3 : '+/(y&^%!)"0 i.50' 

Однако точность не так хороша, как родная ^:

a =: 3 : '+/(y&^%!)"0 i.50' 4 4 $ 10+i.20 
    b =:^4 4 $ 10+i.20 
    a = b 
1 1 1 1 
0 0 0 0 
0 0 0 0 
0 0 0 0