如何解决球拍功能,用于查找给定功能的列表的最小元素
在Racket(Scheme)中是否有一些可以给我元素的函数,该元素在列表中应用给定函数后会产生最小值。
类似于(apply min (map f list))
,但在应用f之前返回了元素。
例如:
(define lst '((1 . 3) (3 . 8) (5 . 6))
(define (f pair)
(- (cdr pair) (car pair)))
(minimum f lst)
这应该给'(5 . 6)
。
为此,至少在没有直接功能的情况下,应该有一个具有较高阶函数的衬里(因为我必须填写一行来获得此行为)。 有什么想法吗?
解决方法
尝试argmin
:
#lang racket
(define lst '((1 . 3) (3 . 8) (5 . 6)))
(define (f pair)
(- (cdr pair) (car pair)))
(argmin f lst)
根据需要生成'(5 . 6)
。
您可以使用min
中的this generic version,它接受一个key
参数:
(require relation)
(apply min #:key f lst)
=> '(5 . 6)
此版本的min
也适用于字符串或任何其他可排序类型(即不仅是数字)。
[披露:我是这个图书馆的作者]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。