Поскольку 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() {});
})
Если вы хотите ограничиться этими четырьмя операциями, просто определите тип самостоятельно:
data ArithOp = Plus | Minus | Times | Div
as_fun Plus = (+)
as_fun Minus = (-)
as_fun Times = (*)
as_fun Div = (/)
Есть ли конкретный тип для различения этих функций (
blockquote>/
,*
,+
,-
)?Я не вижу причины сделать это. Почему
\x y -> x+y
считается «лучше», чем\x y -> x + y + 1
. Конечно, добавление двух чисел - это то, что большинство посчитает более «чистым». Но странно ограничивать себя определенным набором функций. Также возможно, что для некоторой функции\x y -> f x y - 1
«случается» быть равным(+)
, за исключением того, что компилятор не может это определить.Проверка типов гарантирует, что нельзя передавать функции, которые работают с числами, учитывая, что список содержит строки и т. Д. Но намеренное ограничение этого в дальнейшем не очень полезно. Почему вы запрещаете программистам использовать вашу функцию для разных целей?
Или есть другой способ успешно написать эту функцию?
blockquote>Здесь вы описываете функцию
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
глава списка, и рекурс на хвосте списка.