Finish draft of Idris post
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
33b1457e91
commit
ae9805e4f2
|
@ -1,7 +1,6 @@
|
||||||
---
|
---
|
||||||
title: Meaningfully Typechecking a Language in Idris
|
title: Meaningfully Typechecking a Language in Idris
|
||||||
date: 2020-02-27T21:58:55-08:00
|
date: 2020-02-27T21:58:55-08:00
|
||||||
draft: true
|
|
||||||
tags: ["Haskell", "Idris"]
|
tags: ["Haskell", "Idris"]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -253,9 +252,18 @@ Awesome!
|
||||||
### Wrapping Up
|
### Wrapping Up
|
||||||
In this post, we learned that type checking can be used to translate an expression into
|
In this post, we learned that type checking can be used to translate an expression into
|
||||||
a more strongly-typed data type, which can be (more) safe to evaluate. To help
|
a more strongly-typed data type, which can be (more) safe to evaluate. To help
|
||||||
strengthen the types of our expression language, we used the Idris language and
|
strengthen the types of
|
||||||
|
{{< sidenote "right" "if-else-note" "our expression language," >}}
|
||||||
|
You may be thinking, "but where did the if-expressions go?". It turns out
|
||||||
|
that making sure that the branches of an if-expression are of the same
|
||||||
|
type is actually a fairly difficult task; the best way I found was
|
||||||
|
enumerating all the possible "valid" combinations of types in a case-expression.
|
||||||
|
Since this is obviously not the right solution, I decided to publish what I have,
|
||||||
|
and look for an alternative. If I find a better solution, I will write a follow-up
|
||||||
|
post.
|
||||||
|
{{< /sidenote >}} we used the Idris language and
|
||||||
its support for dependent types and Generalized Algebraic Data Types (GADTs).
|
its support for dependent types and Generalized Algebraic Data Types (GADTs).
|
||||||
I this was interesting!
|
I hope this was interesting!
|
||||||
|
|
||||||
As usual, you can find the code for this post in this website's Git repository. The
|
As usual, you can find the code for this post in this website's Git repository. The
|
||||||
source file we went through today is found [here](https://dev.danilafe.com/Web-Projects/blog-static/src/branch/master/code/typesafe-interpreter/TypesafeIntr.idr).
|
source file we went through today is found [here](https://dev.danilafe.com/Web-Projects/blog-static/src/branch/master/code/typesafe-interpreter/TypesafeIntr.idr).
|
||||||
|
|
Loading…
Reference in New Issue
Block a user