【发布时间】:2018-03-17 15:15:49
【问题描述】:
我是 Racket 的新手,我正在尝试定义一个函数 sort-mail 来对哈希表进行排序。
我有一些已定义的列表:
(define test-dates
'("Sun, 10 Sep 2017 09:48:44 +0200"
"Wed, 13 Sep 2017 17:51:05 +0000"
"Sun, 10 Sep 2017 13:16:19 +0200"
"Tue, 17 Nov 2009 18:21:38 -0500"
"Wed, 13 Sep 2017 10:40:47 -0700"
"Thu, 14 Sep 2017 12:03:35 -0700"
"Wed, 18 Nov 2009 02:22:12 -0800"
"Sat, 09 Sep 2017 13:40:18 -0700"
"Tue, 26 Oct 2010 15:11:06 +0200"
"Tue, 17 Nov 2009 18:04:31 -0800"
"Mon, 17 Oct 2011 04:15:12 +0000"
"Sun, 16 Oct 2011 23:12:02 -0500"
"Mon, 11 Sep 2017 14:41:12 +0100"))
(define sorted-dates
'("Tue, 17 Nov 2009 18:04:31 -0800"
"Tue, 17 Nov 2009 18:21:38 -0500"
"Wed, 18 Nov 2009 02:22:12 -0800"
"Tue, 26 Oct 2010 15:11:06 +0200"
"Sun, 16 Oct 2011 23:12:02 -0500"
"Mon, 17 Oct 2011 04:15:12 +0000"
"Sat, 09 Sep 2017 13:40:18 -0700"
"Sun, 10 Sep 2017 09:48:44 +0200"
"Sun, 10 Sep 2017 13:16:19 +0200"
"Mon, 11 Sep 2017 14:41:12 +0100"
"Wed, 13 Sep 2017 10:40:47 -0700"
"Wed, 13 Sep 2017 17:51:05 +0000"
"Thu, 14 Sep 2017 12:03:35 -0700"))
函数应该通过这个测试。
(module+ test
(define test-hashes (map (lambda (x) (hasheq 'Date x)) test-dates))
(define sorted-hashes (map (lambda (x) (hasheq 'Date x)) sorted-dates))
(check-equal? (sort-mail test-hashes) sorted-hashes))
那么,我该如何开始呢?我发现 Racket 中的哈希表非常困难。我想过使用sort 函数,但它猜测它不会将哈希表作为参数。
【问题讨论】:
-
“对哈希表进行排序”是什么意思?不可变哈希表按其元素的哈希值排序存储,这在某种程度上是内在的。他们就是这样工作的。我不明白你在问什么。