【问题标题】:Purely Functional Racket纯功能球拍
【发布时间】:2014-05-10 15:41:50
【问题描述】:

什么是改变状态的所有 Racket 程序? 我正在尝试创建一个副作用尽可能少的程序

所以,我会这样做:

#lang racket/base
(provide (except-out (all-from-out racket/base) set! …more here…))

除了设置我还应该排除什么! ? 是否有所有不纯函数的完整列表?

哦,该程序还使用#lang racket/gui(据我所知,这主要是不纯的)。所以这可能很棘手......

谢谢。

【问题讨论】:

  • 您能否详细说明原因——即您想要做什么?因为“不可变”是相对于某些上下文的。没有程序相对于 CPU 和 RAM 状态是“不可变的”。不太极端的是,一个函数可能纯粹表现,但它的实现可能使用记忆化——这对你来说算吗?我不确定你关心什么背景。在任何情况下,GUI 通常使用有状态 OOP 来处理,就像在 Racket 中一样。
  • 我想避免使用副作用,所以我的函数会表现得纯粹是因为我相信测试和推理我的程序会更容易。如果 'racket/gui' 需要有状态的设计,那么我可以做些什么来减轻这种需求?

标签: functional-programming racket purely-functional


【解决方案1】:

Racket 中没有预先构建的非纯函数列表。 如果您只是避免使用任何具有 !名副其实,你会亲近的。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 2019-07-31
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多