Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
CziSKY committed Jun 2, 2024
1 parent ea10903 commit 3cf14c2
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions content/a_gentle_introduction_to_liquid_types/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ Liquid Types 通过引入逻辑谓词(Logical Predicates)扩展现有的类
结构之外,值还具有语义属性。Liquid Types 通过逻辑谓词扩展了现有的类型系统,使我们能够指定值的语义属性。例如,Int 类型可以通过逻辑谓词来描述非零的整数:

```haskell
{v:Int | v /= 0}
{v : Int | v /= 0}
```

或者用来描述自然数(Natural Numbers):

```haskell
{v:Int | v >= 0}
{v : Int | v >= 0}
```

由于 Liquid Types 能够描述值的语义,使我们可以静态地捕捉语义类型错误,例如上面阐述的除零案例。
Expand All @@ -38,7 +38,7 @@ div :: Int -> Int -> Int
使用 Liquid Types我们可以精炼Refine类型签名来描述操作符的语义属性特别是除数不应该为零

```haskell
div :: Int -> {v:Int | v /= 0} -> Int
div :: Int -> {v : Int | v /= 0} -> Int
```

上述类型为 `div` 操作符进行了规范如果程序通过了上述类型检查编译器在编译时就会验证 `div` 的第二个参数是否不同于零从而防止除零运行时异常接下来我们看看这个验证是如何进行的
Expand Down

0 comments on commit 3cf14c2

Please sign in to comment.