在Racket中使用“define-type”会出错

时间:2016-04-23 19:27:35

标签: racket typed-racket

最近我正在学习Racket,我在理解“define-type”语法方面遇到了一些困难。我尝试过以下代码:

<!DOCTYPE html>
<html>
<head>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    <script>

    var source = new EventSource("/progress");
    source.onmessage = function(event) {
        $('.progress-bar').css('width', event.data+'%').attr('aria-valuenow', event.data);
        if (event.data >=100) {
            source.close();
            window.location = "http://127.0.0.1:5000/done"
        }
    }
    </script>
</head>
<body>
    <div class="progress" style="width: 50%; margin: 50px;">
        <div class="progress-bar progress-bar-striped active"  role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%">
  </div>
</div>
</body>
</html>

但它输出以下错误消息:

#lang racket
(define-type Num Number)

愿任何人帮我处理这个错误吗?我已经阅读了所有可能的文档,看起来它应该正常工作。

1 个答案:

答案 0 :(得分:4)

每个Racket程序都有一个以#lang开头的行开头的原因:Racket不仅仅是一种编程语言,而是一种编程语言的生态系统。每个文件(更具体地说,每个模块)都可以使用自己的编程语言,并且可以轻松地相互通信。

默认情况下,Dr。Racket会在顶部创建一个#lang racket行的新文件。这是“球拍语言”,但它不是“球拍系统”提供的唯一语言,实际上包括几十种语言,有些语言与#lang racket差别不大,其他几乎完全不相关。

如果您想使用Typed Racket,您需要选择使用该语言而不是普通的#lang racket,它是动态输入的。您可以在程序顶部写下#lang typed/racket来完成此操作。

#lang typed/racket
(define-type Num Number)

现在,在该模块中,您可以使用Typed Racket的所有功能。