有没有办法将list-ref调用的列表的单个值更改为键入的Racket中的其他值?
喜欢:(更改(list-ref(list 1 2 2)0)4) 输出:(清单4 2 2)
(: duck : (Listof Integer) -> (Listof Integer))
(define (duck n)
(match n
[' () ' ()]
[(cons x r)
(cond
[(= x (list-ref n 1))
(cons 4 (duck r))]
[else (cons x (duck r))])]))
我试图这样写这个递归函数,但它不起作用。我的逻辑如下:如果x是(list-ref n 1),则将x更改为4。
非常感谢任何帮助。
答案 0 :(得分:0)
list-set
可以满足您的需求:
#lang typed/racket/base
(require/typed unstable/list
[list-set (All (a) (Listof a) Natural a -> (Listof a))])
(list-set (list 1 2 2) 0 4)
; '(4 2 2)
<强>更新强>
最新版本的球拍现在提供typed/racket
的{{3}}:
#lang typed/racket
(list-set (list 1 2 2) 0 4)
或者如果您想使用typed/racket/base
:
#lang typed/racket/base
(require racket/list)
(list-set (list 1 2 2) 0 4)