Functional programming 功能编程-标准符号、图表等
我有一个问题,我认为最好通过函数式编程来解决 来自一个非常重要的背景,我习惯于涉及类图/描述、通信图、状态图等的程序设计。然而,这些图都暗示或用于描述系统的状态以及操作对系统的各种副作用 功能程序的设计中是否使用了任何标准化的图表或数学符号集,或者这些程序是否最好用简短的功能伪代码设计(假设函数比命令式程序短得多)Functional programming 功能编程-标准符号、图表等,functional-programming,uml,diagram,Functional Programming,Uml,Diagram,我有一个问题,我认为最好通过函数式编程来解决 来自一个非常重要的背景,我习惯于涉及类图/描述、通信图、状态图等的程序设计。然而,这些图都暗示或用于描述系统的状态以及操作对系统的各种副作用 功能程序的设计中是否使用了任何标准化的图表或数学符号集,或者这些程序是否最好用简短的功能伪代码设计(假设函数比命令式程序短得多) 谢谢,迈克,函数式编程有一个秘密诀窍 它在很大程度上是无状态的,因此传统的命令式图表并不重要 大多数普通的花园式数学符号也是无状态的 功能设计更像是代数而不是其他任何东西。您将定义函
谢谢,迈克,函数式编程有一个秘密诀窍
因为函数式编程比过程式编程要简单一些,所以图表不是必需的。它更像是传统的数学符号。使用数学技巧来证明您的各种函数都做了正确的事情。我对函数编程了解不多,但这里有两件事我遇到过
- λ(λ)通常用于表示a 作用
- fοg用于表示功能 构图
- 用相等代替相等
- 应用代数定律
- 归纳法的偶然证明
(append (list x) l)
我会疯狂地用平等代替平等。使用列表的定义
我得到
(append (cons x '()) l)
代替我的身体
(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))
根据另一个定律,(如果#f e1 e2)=e2,我得到
(cons x (append '() l))
如果我再次扩展append的定义,我得到
(cons x l)
我已经证明了这一点
(append (list x) l)
- 有一篇很好的文章介绍了使用动画的Lambda演算:
- 此版本与前一版本非常相似,但有一个实际实现:
类型的箭头表示法,即:(a-->M
b)-->Ma-->M
b如何,很难回答这个问题。面向对象