标签: scheme

(字符串<?"alpha""bet")⇒是的.这句话怎么样?

(string<? "alpha" "bet")? true

这句话怎么样?

字符串<计算什么?投注的字符数少于alpha.

scheme racket

1
推荐指数
1
解决办法
40
查看次数

在Scheme中定义结构.希望得到帮助

我对Scheme很新,我正在使用DrRacket,我希望得到一些急需的帮助.

我正在定义结构,我在某种程度上理解,但我似乎遇到了障碍.

我需要做到这一点,因此"EmployeeRaise"函数适用于所有检查期望,而不会使它只能用于一个特定的检查期望.

主要问题是在定义中,更具体地说,在粗体部分,

(+(员工 - 小时率em)(*(员工 - 小时率em)0.1)))

我似乎无法弄清楚它如何确定每个人的员工每小时费率,而不是那个用"em"定义的员工.

我认为将所有三名员工都定义为"em",但不会让我这样做.

我希望有人可以帮助我.

这是我的代码:

(define-struct employee (Name Hourly-rate overtime?))

;;Signature: EmployeeRaise: string -> number
;;Purpose: Consumes an employee and returns an employee with the hourly rate increased by 10%.
;;Tests
(check-expect (EmployeeRaise "Ben") 13.2)
(check-expect (EmployeeRaise "Joe") 16.5)
(check-expect (EmployeeRaise "Debbie") 22)
;; Define
(define (EmployeeRaise employee-Name)
  (+ (employee-Hourly-rate em) (* (employee-Hourly-rate em) 0.1)))
Run Code Online (Sandbox Code Playgroud)

scheme structure racket

1
推荐指数
1
解决办法
68
查看次数

为什么Scheme需要应用于Y-combinator实现,但是Racket没有?

这是Racket中的Y-combinator:

#lang lazy

(define Y (?(f)((?(x)(f (x x)))(?(x)(f (x x))))))

(define Fact
  (Y (?(fact) (?(n) (if (zero? n) 1 (* n (fact (- n 1))))))))
(define Fib
  (Y (?(fib) (?(n) (if (<= n 1) n (+ (fib (- n 1)) (fib (- n 2))))))))
Run Code Online (Sandbox Code Playgroud)

这是Scheme中的Y-combinator:

(define Y
  (lambda (f)
    ((lambda (x) (x x))
     (lambda (g)
       (f (lambda args (apply (g g) args)))))))

(define fac
  (Y
    (lambda (f)
      (lambda (x)
        (if (< x 2)
            1
            (* x …
Run Code Online (Sandbox Code Playgroud)

lisp scheme y-combinator apply racket

1
推荐指数
1
解决办法
655
查看次数

(#t #f)在Scheme函数中意味着什么?

我从互联网上获得了这个代码,我没有得到(#t #f)函数最后一行的含义.请详细说明.

(define (equal? S1 S2)
    (cond ((and (not (pair? S1)) (not (pair? S2))) (eqv? S1 S2))
          ((or (not (pair? S1)) (not (pair? S2))) #f)
          ((equal? (car S1) (car S2)) (equal? (cdr S1) (cdr S2))) 
          (#t #f)))
Run Code Online (Sandbox Code Playgroud)

scheme

1
推荐指数
1
解决办法
1764
查看次数

球拍简单的int生成器函数序列

我已经开始研究我的第一个球拍功能,但是有一个很大的问题.

(define (sequence low hide stride)
   (letrec ([list-of-int null])
          (define (f low hide stride)
           (if (< low hide)
              [(begin ((append (list low) list-of-int)
                (f (+ low stride) hide stride)))]
              [list-of-int]))
     (f low hide stride)))
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我理解我的球拍吗?在我看来,它看起来很好,但不起作用.我在互联网上找到了更简单的解决方案:

(define (sequence low high stride)
   (if (> low high)
     null
     (cons low  (sequence (+ low stride) high stride))))
Run Code Online (Sandbox Code Playgroud)

我理解但为什么我的代码不起作用?有谁能够帮我?

奥斯卡回答真的很棒)非常感谢亲爱的朋友.

scheme functional-programming racket

1
推荐指数
1
解决办法
325
查看次数

Scheme(Racket)正确编写的函数不适用于某些输入

所以我在球拍中编写了I函数来计算Sums:

(define (sum term a next b)
  (if (> a b)
      0
      (+ (term a) (sum term (next a) next b))))
Run Code Online (Sandbox Code Playgroud)

术语是应用于每个参数的函数.A接下来是我们如何前进到下一个元素(即a2 = 2*a1或a2 = a1 + 1等),b是最后一个元素.

还有2个附加功能:

(define (square x) (* x x))
(define (inc x) (+ x 1))
Run Code Online (Sandbox Code Playgroud)

如果我输入:

(sum square 1 inc 5)我得到的是正确的55

但如果我输入:

(总平方1平方5)

我陷入了困境!?为什么a2应该是a1*a1和a3 = a2*a2并且a应该超过b,因此结束递归的条件将是fultifield.很奇怪.

lisp scheme functional-programming infinite-loop racket

1
推荐指数
1
解决办法
155
查看次数

Racket中的哪种数据类型是这样的?

例如:

'(ace spade king queen)
Run Code Online (Sandbox Code Playgroud)

我理解它在列表中,但我不确定将是什么数据类型..我假设它是一个字符串,但不是一个字符串应该有双引号围绕这个词?

scheme type-conversion racket

1
推荐指数
1
解决办法
70
查看次数

`(mcons(m)'()25)16)`和`(mcons 25(mcons 16`()))之间有什么区别?

我正忙于计算机程序的结构和解释练习2.18.在这里,我们必须定义一个反向过程以反转列表.它应该做到以下几点:

(reverse (list 1 4 9 16 25))
;; => (25 16 9 4 1)
Run Code Online (Sandbox Code Playgroud)

我想出了以下定义:

(define (reverse list)
  (if (null? list) 
      list
      (cons (reverse (cdr list)) (car list))))
;; => (mcons (mcons (mcons (mcons (mcons '() 25) 16) 9) 4) 1).
Run Code Online (Sandbox Code Playgroud)

然后在解决方案中找到类似如下的内容:

(define (reverse items) 
  (if (null? (cdr items)) 
      items 
      (append (reverse (cdr items)) 
              (cons (car items) nil))))
;; => (mcons 25 (mcons 16 (mcons 9 (mcons 4 (mcons 1 '()))))).
Run Code Online (Sandbox Code Playgroud)

这里appendcons …

scheme sicp cons racket cdr

1
推荐指数
1
解决办法
324
查看次数

("v"1)和("v".1)之间的差异

开始学习计划,我遇到了这个:

有什么区别

("v" . 1)
Run Code Online (Sandbox Code Playgroud)

("v" 1)
Run Code Online (Sandbox Code Playgroud)

他们似乎工作相同,只是想知道有什么区别.我倾向于使用("v" 1),但( cons "v" 1 )返回("v" . 1).那么,有什么区别?

谢谢

scheme

1
推荐指数
1
解决办法
33
查看次数

Lambda表达式作为Scheme中的monad?

我正在网上阅读一些试图为Scheme程序员提出monad概念的文档.核心思想是,在非命令式编程中,monad用于表示"计算流程",即强制执行表达式的顺序评估.然后它让我感到震惊:因为lambda表达式的主体是按顺序计算的,所以应该理解monad在Scheme中是多余的吗?lambda实体在其他语言中的评估方式是否不同(例如Haskell或ML)?

monads lambda scheme haskell functional-programming

1
推荐指数
1
解决办法
857
查看次数