/= stop = f acc <|> go (next acc)
.......| otherwise = Nothing
А эта подлежит, верно?
go acc
.....| acc /= stop =
.........case f acc of
..........Nothing -> go (next acc)
..........result -> result
.....| otherwise = Nothing
Я может что-то путаю, но в остальных языках TCO нужно для того, чтобы не выйти за пределы стека когда вызываются функции. Но при этом в хаскеле нет call stack.
стек есть, только стек паттерн-матчей. ну и он растущмй так что не особо страшно его вышибить
Я не зря там именно call stack написал.
потому что тогда части реплики получаются логически не связанными. в других языках бузина, а в Хаскеле дядька
Да вроде все там связано. В других языках call stack есть. В хаскеле нет.
и в чём противоречие?
Обсуждают сегодня