Racket 如何检查列表是否为列表列表?
我试图在将参数用于带有racket的函数之前检查它是否正确。此参数必须是列表的列表 我试过:Racket 如何检查列表是否为列表列表?,racket,Racket,我试图在将参数用于带有racket的函数之前检查它是否正确。此参数必须是列表的列表 我试过: (andmap (lambda (x) (not (and (list? x) (not (pair? x))))) lst) 与: 但是它失败了,因为(pair?'(a))是真的。对于对?我试图避免(a.1)点对,因为(list?(a.1))也是正确的 如何检查列表是否为列表列表且不包含点对?三件事: 要检查列表是否为列表列表,只需编写 (define (list-of-lists? v) (a
(andmap (lambda (x) (not (and (list? x) (not (pair? x))))) lst)
与:
但是它失败了,因为(pair?'(a))
是真的。对于对?
我试图避免(a.1)
点对,因为(list?(a.1))
也是正确的
如何检查列表是否为列表列表且不包含点对?三件事:
(define (list-of-lists? v)
(and (list? v) (andmap list? v)))
它首先检查值是否为列表,然后检查其所有元素是否为列表(require racket/contract)
(define/contract (f lst-of-lsts)
(-> (listof list?) any/c)
#| do something here |#)
quote
的工作原理有些困惑。你的意思可能是写((a)(b)(c))
,而不是((a);(b);(c))
。请阅读或仅使用列表
功能等等,为什么
(列表?'(a.1))
是真的?当我评估我得到的false@AlexKnauth也许,我犯了一个错误。对不起,谢谢你的回答。我尝试了(列表列表?')
,它返回true。我将修改它以返回false。
(require racket/contract)
(define/contract (f lst-of-lsts)
(-> (listof list?) any/c)
#| do something here |#)