Есть ли такой подход, когда для написания большей части логики используется функциональная парадигма, а для некоторых вспомогательных частей - императивная? Например разделять на уровне синтаксиса ЯП какие функции/методы являются «чистыми», а какие нет. Что-то на уровне псевдокода:
// объявления в чисто функциональном стиле
defunc PrimeNums = 2 : [n | n <- [3..], IsPrime n]
defunc IsPrime n = foldr (\p r-> p*p>n || (rem n p /= 0 && r)) True PrimeNums
// объявления в императивном стиле
def Foo(a, b, c):
v1 = IsPrime(a)
v2 = IsPrime(b)
v3 = IsPrime(c)
return v1 or v2 or v3
Существуют ли подобные ЯП? Может быть Lisp?