Functional programming 纯功能球拍

Functional programming 纯功能球拍,functional-programming,racket,purely-functional,Functional Programming,Racket,Purely Functional,变异状态的所有敲诈程序是什么? 我正在尝试创建一个副作用尽可能小的程序 所以,我会这样做: #lang racket/base (provide (except-out (all-from-out racket/base) set! …more here…)) 除了set,我还应该排除什么? 是否有一个关于所有不纯函数的完整列表 哦,这个程序还使用了#lang racket/gui(据我所知,它大多是不纯净的)。所以这可能很棘手 谢谢。Racket中没有预先构建的非纯函数列表。 如果你只是不使

变异状态的所有敲诈程序是什么? 我正在尝试创建一个副作用尽可能小的程序

所以,我会这样做:

#lang racket/base
(provide (except-out (all-from-out racket/base) set! …more here…))
除了set,我还应该排除什么? 是否有一个关于所有不纯函数的完整列表

哦,这个程序还使用了#lang racket/gui(据我所知,它大多是不纯净的)。所以这可能很棘手


谢谢。

Racket中没有预先构建的非纯函数列表。 如果你只是不使用任何有危险的东西!以你的名义,你会接近的


请注意,您可以使用可变数据结构,并且仍然以纯功能的方式进行编程—只要您不改变它们。

您能详细说明原因吗?即,您正在尝试做什么?因为“不可变”是相对于某些上下文的。相对于CPU和RAM状态,没有程序是“不可变的”。不太极端的是,函数的行为可能是纯粹的,但它的实现可能会使用memonization——对于您来说,这算不算?我不知道你关心的是什么背景。在任何情况下,GUI通常都是用有状态OOP处理的,就像在Racket中一样。我希望避免使用副作用,这样我的函数就可以正常工作,因为我相信这样会更容易测试和解释我的程序。如果“racket/gui”需要有状态的设计,那么我可以做些什么来缓解这种需要?