Блок-схема. Эта древняя старая практика, которая используется уже более 1000 лет, навязывается нам бедными учениками, без какой-либо пользы (или, как я думаю). Это может хорошо работать с императивными, последовательно работающими языками, но как насчет моего любимого функционального программирования?Функциональные языки программирования блок-схем
К сожалению, я вынужден создать блок-схему моей программы (написанной в Haskell).
Я полагаю, что быть просто что-то вроде этого:
main :: IO()
main = do
someInput <- getLine
let upped = map toUpper someInput
putStrLn upped
который находится всего в 3 последовательных шагов, выборка данных, верхний регистр его, выводя его.
Вещи выглядят хуже, на этот раз:
main :: IO()
main = do
someInput <- fmap toUpper getLine
putStrLn someInput
Или так:
main :: IO()
main = interact (map toUpper)
Хорошо, что было IO, вы можете справиться, что, как императивный язык. А как насчет чистых функций?
Реальный пример:
onlyMatching :: String -> [FilePath] -> [FilePath]
onlyMatching ext = filter f
where f name = lower ('.' : ext) == (lower . takeExtension $ name)
lower = map toLower
Как бы вы блок-схему, что последний?
Почему вы вынуждены составлять блок-схему для программы в Haskell? –
@David: Возможно, что-то вроде «Assignment A: Создайте следующую программу на выбранном вами языке. Назначение B: Сделайте блок-схему для вашей программы» – sepp2k
Блок-схемы не работают хорошо с ленивой оценкой, а? –