流程图功能编程语言

Luk*_*keN 11 haskell functional-programming flowchart

流程图绘制.这种古老的旧习惯已经使用了1000多年,被强加给我们贫穷的学生,没有任何用处(或者我认为是这样).它可能适用于命令式,顺序运行的语言,但我心爱的函数式编程呢?

可悲的是,我被迫为我的程序创建一个流程图(用Haskell编写).

我想这很容易:

main :: IO ()
main = do
   someInput <- getLine
   let upped = map toUpper someInput
   putStrLn upped
Run Code Online (Sandbox Code Playgroud)

这只是3个有序的步骤,获取数据,高位输出,输出它.

这次事情变得更糟:

main :: IO ()
main = do
   someInput <- fmap toUpper getLine
   putStrLn someInput
Run Code Online (Sandbox Code Playgroud)

或者像这样:

main :: IO ()
main = interact (map toUpper)
Run Code Online (Sandbox Code Playgroud)

好的,那就是IO,你可以像命令式语言那样处理它.纯函数怎么样?

一个实际的例子:

onlyMatching :: String -> [FilePath] -> [FilePath]
onlyMatching ext = filter f
   where f name = lower ('.' : ext) == (lower . takeExtension $ name)
         lower  = map toLower
Run Code Online (Sandbox Code Playgroud)

你将如何描绘最后一个?

ken*_*ytm 12

我不认为代表进程(因此改变状态)的流程图适用于FP,它主要是无状态的.

但我认为你可以展示一个电路图(?).

        ext
       _ | ______________________________________________
      |  |                                               |
      |  `-> [ '.' : ] -------> [ lower ] --.__          |
      |                                      __ [ == ] ----->
name --> [ takeExtension ] ---> [ lower ] --'            |
      |__________________________________________________|
                              f
Run Code Online (Sandbox Code Playgroud)

你最好咨询教练.