![]() |
1
12
我不认为流程图,它代表过程(因此状态的变化),是适合于FP的,它主要是无状态的。 但我想你可以展示一个电路图(?).
你最好请教老师。 |
![]() |
2
4
事实上, flowcharts 在软件中使用可以追溯到60年前。(实际上,正如我们所知,编程只能追溯到65年!)当时,它们作为一种工具,在“编码”这一非常繁琐且容易出错的阶段之前,作为规划和开发算法的工具,是极其重要的。 现在,我们的编程语言已经达到了一个表达水平,在这个水平上,算法的意图由代码本身更清晰地表达出来。(也许在VisualBasic中没有那么多,但在Haskell中肯定如此。)因此,没有现代编程商店使用流程图。 然而, visual programming languages 存在,并在某些领域取得了巨大的成功。这些环境与流程图有关。也许你的指导老师真的在准备做一些比较编程语言的工作,并引导你们思考这些方法。 最后,对于您手头的特定问题,请这样考虑:传统流程图主要通过程序演示控制流,因为这是当时人们编写的代码类型。然而,总是有一些数据流的说明以及。对于一个功能性程序,您将主要演示数据流。
不过,诀窍在于找出如何说明(部分应用)函数作为数据的流程。想想流程图必须做些什么来支持子例程的概念,它可以在两个地方被调用…现在,也许您可以创建类似的图形结构来表示“由标识的函数作为第二个参数
如果没有别的,可以把它看作是探索程序的替代表示的一项任务——如果你已经扩展了流程图(它不需要处理一般的函数),并且清楚地表明了这一点,那么你的指导老师应该给你额外的分数! |
![]() |
3
2
Hm.…您可以手动将代码编译成一个基于超级组合器的表示,然后绘制一个类似流程图的超级组合器应用程序图。在某些情况下,这样做甚至是有用的,给出了流的一些合理的可视化表示。只需考虑数据流而不是执行流。 |
![]() |
4
1
流程图和fp的线索是您开始在函数流中思考。 正如您现在可能知道的,fp构建在调用函数以完成任务的函数上。 如果你没有一个好的印象,谁会用什么信息给谁打电话,你最终还是会创建意大利面代码或创建大量的函数,做同样的事情,使代码很难维护。 用一个流程图创建一个你计划构建的结构化图表,描述事情发生的顺序,最终你将得到一个可维护且易于测试的程序。 对于不熟悉结构图的用户,这是一种使用发送和返回值对从调用者到接收者的函数调用进行建模的方法。使用它,如果您已经有了一个函数,您可以轻松地从IE配置文件中检索数据,并在系统中的任何地方重用它。 |