Есть ли определенный тип для математических функций в Haskell?

Поскольку christoph упомянул , вы должны смотреть, используя $watch при изменении источника изображения. Но сначала убедитесь, что вы используете ng-src, а не src для тега image.



$scope.$watch('program.image', function(newValue, oldValue) {
    if(newValue===oldValue) return;
    $('img#new').hide();
    $('img#new').fadeIn("slow", function() {});
})

1
задан SHR 16 January 2019 в 14:47
поделиться

2 ответа

Если вы хотите ограничиться этими четырьмя операциями, просто определите тип самостоятельно:

data ArithOp = Plus | Minus | Times | Div

as_fun Plus = (+)
as_fun Minus = (-)
as_fun Times = (*)
as_fun Div = (/)
0
ответ дан Alexey Romanov 16 January 2019 в 14:47
поделиться

Есть ли конкретный тип для различения этих функций (/, *, +, -)?

Я не вижу причины сделать это. Почему \x y -> x+y считается «лучше», чем \x y -> x + y + 1. Конечно, добавление двух чисел - это то, что большинство посчитает более «чистым». Но странно ограничивать себя определенным набором функций. Также возможно, что для некоторой функции \x y -> f x y - 1 «случается» быть равным (+), за исключением того, что компилятор не может это определить.

Проверка типов гарантирует, что нельзя передавать функции, которые работают с числами, учитывая, что список содержит строки и т. Д. Но намеренное ограничение этого в дальнейшем не очень полезно. Почему вы запрещаете программистам использовать вашу функцию для разных целей?

Или есть другой способ успешно написать эту функцию?

Здесь вы описываете функцию scanl :: (b -> a -> b) -> b -> [a] -> [b] . Если мы назовем scanl с scanl f z [x1, x2, ..., xn], то получим список [z, f z x1, f (f z x1) x2, ...]. scanl может быть определено как:

scanl :: (b -> a -> b) -> b -> [a] -> [b]
scanl f = go
    where go z [] = [z]
          go z (x:xs) = z : go (f z x) xs

Таким образом, мы сначала излучаем аккумулятор (который начинается с начального значения), а затем «обновляем» аккумулятор до f z x z старый аккумулятор и x глава списка, и рекурс на хвосте списка.

0
ответ дан Willem Van Onsem 16 January 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: