比较两个列表的长度并追加到球拍中

compare the length of two list and append in racket

我尝试在 Racket 中编写一个函数 merge_longer,它将两个列表 L1 和 L2 作为输入。如果 L1 比 L2 长,则函数将 L2 附加到 L1。否则,它将 L1 附加到 L2。

(define L1 '(4 6 8 9))
(define L2 '(1 2 3)) 
(define (merge_longer L1 L2) (if (> length(L1) length(L2)) (append L1 L2)(append L2 L1)))  
(merge_longer L1 L2)

但是,当我 运行 它时显示此错误: 申请:不是程序; 期望一个可以应用于参数的过程 给出:'(4 6 8 9) 参数...:[none]

有人可以帮我解决这个问题吗?

你很接近。

(define (merge-longer l1 l2)
  (if (> (length l1) (length l2))
      (append l1 l2)
      (append l2 l1)))

请注意,您可以在 Racket 中添加额外的括号。 当你写 (l1) 时,它意味着 "apply the function l1 to no arguments"。 由于 l1 是一个列表,而不是一个函数,你会得到一个错误。