我有一个问题,我认为这是最好的解决通过功能性的程序。

来自一个非常必要的背景,我用程序设计的,涉及类图/说明,通信图、状态图等等。这些图表,但是,所有意味着,或者是用来描述,国家的一个系统和各种负面影响,行动有关的系统。

是否有任何标准化组图表或数学符号的设计中使用的功能程序,或是这类方案的设计最好在短功能的伪代码(给予这一功能将大大短于必须同行).

谢谢,迈克

有帮助吗?

解决方案

函数式编程有一个秘密技巧。

  1. 它基本上是无国籍的,所以传统的命令图并不重要。

  2. 大多数普通的花园式数学符号也是无国籍的。

  3. 功能设计更像是代数而不是其他任何东西。您将定义函数,并显示这些函数的组合产生所需的结果。

    图表不是必需的,因为函数式编程比程序编程简单一些。它更像传统的数学符号。使用数学技术来表明您的各种功能都能做正确的事情。

其他提示

功能的程序更为方程式编写,然后编写的图表。游戏叫做 等式推理 它主要涉及到

  • 替代等于对平等的

  • 申请法律代数

  • 偶尔证明的感应

这个想法是,你写的真简单的代码是"显然是正确的",然后使用等式推理,把它变成东西是更清洁和/或将更好地执行。该掌握这种技术是一个牛津大学教授名叫理查德的鸟。

例如,如果我想要简化的方案表达

(append (list x) l)

我将代等于等于像疯了似的。使用的定义 list 我得到

(append (cons x '()) l)

Subsituting体的追加我

(if (null? (cons x '())) 
    l
    (cons (car (cons x '())) (append (cdr (cons x '())) l)))

现在我有些代法律:

(null? (cons a b)) == #f
(car   (cons a b)) == a
(cdr   (cons a b)) == b

和替代等于等于我得到

(if #f
    l
    (cons x (append '() l))

与另一项法律, (if #f e1 e2) == e2, 我得到

(cons x (append '() l))

如果我花费的定义追加再次我得到

(cons x l)

我已经证明是等于

(append (list x) l)

我不知道很多关于编程功能,但这里有两件事情我已经碰到

  • λ(lambda)经常用来表示一个 功能
  • f ο克是用来指示功能 组成
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top