Lưu đồ. Thực hành cổ xưa này đã được sử dụng hơn 1000 năm nay, bị ép buộc khi chúng ta học sinh nghèo, không có bất kỳ sự hữu ích nào (hoặc tôi nghĩ thế). Nó có thể hoạt động tốt với các ngôn ngữ bắt buộc, tuần tự chạy, nhưng những gì về chương trình chức năng yêu quý của tôi?Lưu đồ ngôn ngữ lập trình chức năng
Đáng buồn thay, tôi buộc phải tạo biểu đồ luồng cho chương trình của tôi (được viết bằng Haskell).
tôi tưởng tượng nó là dễ dàng cho một cái gì đó như thế này:
main :: IO()
main = do
someInput <- getLine
let upped = map toUpper someInput
putStrLn upped
Đó là chỉ trong 3 bước trình tự, lấy dữ liệu, uppercasing nó, xuất ra nó.
Những điều trông tồi tệ hơn thời gian này:
main :: IO()
main = do
someInput <- fmap toUpper getLine
putStrLn someInput
Hoặc như thế này:
main :: IO()
main = interact (map toUpper)
Được rồi, đó là IO, bạn có thể xử lý đó như một ngôn ngữ bắt buộc. Còn các chức năng thuần túy thì sao?
Một ví dụ thực tế:
onlyMatching :: String -> [FilePath] -> [FilePath]
onlyMatching ext = filter f
where f name = lower ('.' : ext) == (lower . takeExtension $ name)
lower = map toLower
Làm thế nào bạn sẽ Flowchart rằng người cuối cùng?
Làm thế nào bạn bị buộc phải tạo biểu đồ cho một chương trình trong Haskell? –
@David: Có thể giống như "Bài tập A: Tạo chương trình sau bằng ngôn ngữ bạn chọn. Bài tập B: Tạo một sơ đồ cho chương trình của bạn" – sepp2k
Lưu đồ không hoạt động tốt với đánh giá lười biếng, huh? –