Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

your type checker seems too young #5

Open
thautwarm opened this issue Nov 18, 2018 · 2 comments
Open

your type checker seems too young #5

thautwarm opened this issue Nov 18, 2018 · 2 comments
Labels
trying to make big news Something sensational

Comments

@thautwarm
Copy link

thautwarm commented Nov 18, 2018

Please check the most difficult project I've finished in github:
https://github.com/thautwarm/reFining/blob/master/DotNet/reFining/reFining/infr.fs

I can solve the problem you ask in QQ recently about value restrictions.

The tests indicates something meaningful:
https://github.com/thautwarm/reFining/blob/master/DotNet/reFining/test/Tests.fs

Above project is side-effect free, so I think I might get along with Haskell as well.
May I take part in this project to work with the type checkers?

@ice1000
Copy link
Member

ice1000 commented Nov 18, 2018

I can solve the problem you ask in QQ recently about value restrictions.

You mean refinement type? That'll be the greatest high!

May I take part in this project to work with the type checkers?

Yes, Yes, Yes!

Writing down some gossips:

Currently I plan to create a type system based on UTT (which has no difference with MLTT IMO -- imagine a Haskell type system with dependent type). With refinement type, we can make a better termination check.
Also, we can rewrite easier with refinement type. Imagine this Idris code:

b : bla = rua
c : rua = ora
a = rewrite b in rewrite c in Refl

Looks so ugly, hugh? In a language with refinement type we can simply

val b : x:unit{bla = rua}
val c : x:unit{rua = ora}
a = b; c; ()
(* A simplified version of let () = b in let () = c in () *)

Making the code extremely readable!

@ice1000 ice1000 added the trying to make big news Something sensational label Nov 18, 2018
@ice1000
Copy link
Member

ice1000 commented Nov 18, 2018

@ice1000 ice1000 changed the title your type checker seems to be too young your type checker seems too young Nov 27, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
trying to make big news Something sensational
Projects
None yet
Development

No branches or pull requests

2 participants