Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fixed wiki markup links |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
c1d292a0381c892c4a112b79350e006a |
User & Date: | alaric 2017-07-11 21:01:58 |
Context
2017-07-26
| ||
19:05 | Fexprs in kernel paper check-in: 3bc06e06ae user: alaric tags: trunk | |
2017-07-11
| ||
21:01 | Fixed wiki markup links check-in: c1d292a038 user: alaric tags: trunk | |
20:59 | Updated CHROME, with thoughts from reading Design Concepts in Programming Languages and reading about Idris. check-in: 971887d31c user: alaric tags: trunk | |
Changes
Changes to intro/chrome.wiki.
︙ | ︙ | |||
42 43 44 45 46 47 48 | Laziness can come with a performance cost, but the Haskell folks have done lots of good work on strictness analysis. In exchange, you can write conditional constructs without needing macros, streams, infinite data structures, some performance <em>gains</em>, and easier semantics for recursive expressions. | | | | 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | Laziness can come with a performance cost, but the Haskell folks have done lots of good work on strictness analysis. In exchange, you can write conditional constructs without needing macros, streams, infinite data structures, some performance <em>gains</em>, and easier semantics for recursive expressions. Uniqueness typing has <a href="http://home.pipeline.com/~hbaker1/Use1Var.html">many many advantages</a>, so we'll use that instead of nasty monads. But we can do monads too, when they're useful. Haskell-style typeclasses and generic functions are used to provide polymorphism, rather than class- or prototype-based object orientation. |
︙ | ︙ | |||
122 123 124 125 126 127 128 | us an "Any" type we can use in those cases. Dependant types are awesome, too. Let's have those while we're at it. We're now wel into "Type system is Turing complete" territory, so we'd better have function totality as part of the type system to keep our type expressions halting. | | | 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | us an "Any" type we can use in those cases. Dependant types are awesome, too. Let's have those while we're at it. We're now wel into "Type system is Turing complete" territory, so we'd better have function totality as part of the type system to keep our type expressions halting. <a href="https://www.idris-lang.org/">Idris</a> does a pretty epic job of making such a type system work in practice, but I do find the Haskelly syntax for types a bit obtuse at times; it's too pattern-matchy for me. The way constraints are written in "design by contract" languages (eg, Eiffel) are much more readable, to my eyes at least - and as far as I can see, identical in expressiveness. Design by Contract and dependent types are much the same idea, just expressed in different ways, so let's bring them together; we can statically check the constraints |
︙ | ︙ |