cons函数不接受我的输入

时间:2018-04-07 18:06:16

标签: list input racket cons

好吧,我正在尝试添加两个元素来成为一个列表,from the video of Prof. Colleen Lewis在分钟4和53秒,从the official racket site我看到最好的做法是使用“cons”。

当我这样做时:

 curl -s "https://www.example.com/email_yesterdays_appts.php"

它工作得很好,但它给了我一个镜子,我想要得到的。所以我试过了:

(cons (Listof Number) (Listof (Listof Number)))

这导致:

  

类型检查器:无法应用多态函数`cons'   参数:

     

参数1:

     

预期:a

     

鉴于:( Listof(Listof Real))

     

论据2:

     

预期:(列表a)

     

鉴于:(真实的Listof)

     

结果类型:( Listof a)

     

预期结果:( Listof(Listof Real))

     

in :( cons acc(get-min& max-from-mixed-list(first lol)))

这很奇怪,因为official site说:

  

cons函数实际上接受任意两个值,而不仅仅是列表   第二个论点。

这是我的实际代码:

(cons (Listof (Listof Number)) (Listof Number) )

以下是我的代码使用的各种函数的代码。这些工作正常,所以没有理由检查它们:

(: min&max-lists (-> (Listof (Listof Any)) (Listof (Listof Number))))
(: tail-min&max-lists (-> (Listof (Listof Any)) (Listof (Listof Number)) (Listof (Listof Number))))
(: get-min&max-from-mixed-list (-> (Listof Any) (Listof Number)))

(define (min&max-lists lol)
  (tail-min&max-lists lol '()))

(define (tail-min&max-lists lol acc)
  (if (null? lol)
      acc
      (tail-min&max-lists (rest lol) (cons acc (get-min&max-from-mixed-list (first lol))))))

(define (get-min&max-from-mixed-list mixedList)
  (if (null? (sublist-numbers mixedList))
      '()
      (min&maxRec (sublist-numbers mixedList) (first (sublist-numbers mixedList)) (first (sublist-numbers mixedList)))))

(test (min&max-lists '((any "Benny" 10 OP 8) (any "Benny" OP (2 3)))) => '((8 10) ()))

1 个答案:

答案 0 :(得分:1)

请注意,当您链接到cons中的#lang racket时,它与其他语言中的cons不同,例如#lang pl。不同语言中的相同名称功能可以相同,但通常不同。例如。 cons中的#!r6rsmcons中的朋友来自#lang racket#lang pl中的朋友

我不知道(cons (Listof Number) (Listof (Listof Number))) 是什么,但似乎是以某种方式输入的。当你说你做的时候我假设:

(cons a b)

你的意思是:

a

其中(Listof Number)的类型为b,而(Listof (Listof Number))的类型为acc。我注意到第二个类型的Listof是第一个类型的Listof。在您的试用版中,类型没有这种关系,反之亦然。您可能已经切换了参数,并且(cons (get-min&max-from-mixed-list (first lol)) acc) 的正确代码是:

cons

我假设#lang racket的类型规范可能要求第二个列表是与第一个参数的类型相同类型的列表。对于像Scheme和#lang racket (cons 3 #f) ; ==> (3 . #f) 这样的无类型语言,你可以在两个参数中包含任何类型。

    private int printSquares(Graphics g, int xi, int yi, int width, int height,     int deep) {

    int subW = width / 3;
    int subH = height / 3;
    g.fillRect(xi + subW, yi + subH, subW - 1, subH - 1);


    if(deep!=1) {

        printSquares(g, xi, yi, subW, subH, deep-1);
        printSquares(g, xi + subW, yi, subW, subH, deep-1);
        printSquares(g, xi + 2 * subW, yi, subW, subH, deep-1);
        printSquares(g, xi, yi + subH, subW, subH, deep-1);
        printSquares(g, xi, yi + 2 * subH, subW, subH, deep-1);
        printSquares(g, xi + subW, yi + subH, subW, subH, deep-1);
        printSquares(g, xi + subW, yi + 2 * subH, subW, subH, deep-1);
        printSquares(g, xi + 2 * subW, yi + subH, subW, subH, deep-1);
        printSquares(g, xi + 2 * subW, yi + 2 * subH, subW, subH, deep-1);

    }

    return nSquare;}