(bind-func foldr:[!b,[!b,!a,!b]*,!b,List{!a}*]*
(lambda (fn end lst)
(let ((fold (lambda (l r) ; list result
(if (null? l)
r
(fold (cdr l) (fn (car l) r))))))
(fold (reverse lst) end))))