gpt4 book ai didi

lisp - 如何在 Racket 的列表中找到元素的索引?

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:40 26 4
gpt4 key购买 nike

这当然是微不足道的实现,但我觉得 Racket 中肯定有一些内置的东西可以做到这一点。我的直觉是否正确?如果正确,函数是什么?

最佳答案

奇怪的是,Racket 中并没有内置程序来查找列表中元素从 0 开始的索引(相反的程序确实存在,它被称为 list-ref )。然而,高效实现并不难:

(define (index-of lst ele)
(let loop ((lst lst)
(idx 0))
(cond ((empty? lst) #f)
((equal? (first lst) ele) idx)
(else (loop (rest lst) (add1 idx))))))

但是在 srfi/1一个类似的程序,它叫做 list-index您可以通过传递正确的参数来获得所需的效果:

(require srfi/1)

(list-index (curry equal? 3) '(1 2 3 4 5))
=> 2

(list-index (curry equal? 6) '(1 2 3 4 5))
=> #f

更新

从 Racket 6.7 开始,index-of现在是标准库的一部分。享受吧!

关于lisp - 如何在 Racket 的列表中找到元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15871042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com