Finish draft of Idris post
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Danila Fedorin 2020-02-29 17:52:29 -08:00
parent 33b1457e91
commit ae9805e4f2

View File

@ -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).