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

Discussion #2

Open
ice1000 opened this issue Sep 27, 2019 · 8 comments
Open

Discussion #2

ice1000 opened this issue Sep 27, 2019 · 8 comments
Labels
invalid This doesn't seem right wontfix This will not be worked on

Comments

@ice1000
Copy link
Member

ice1000 commented Sep 27, 2019

Here's my initial thoughts about this language:

  • Conversion check should be nominal for simplicity
  • Only case-tree instantiation need to be supported
  • Surface syntax should be considerate of parsing ease
  • Simple (co)inductive types (not indexed) with an identity type as described in Jesper's paper
    • It's not actually (co)inductive -- there's no termination or productivity checks yet
  • Definition by pattern matching according to Jesper's paper
  • Coverage check + case-tree generation described in Jesper's paper
  • Prefix (applying on projection) and postfix (projecting from data) projection (or maybe not?)

... and I plan to enhance everything in the next language after Narc, including (but not limited to):

  • Pattern instantiation, to see if we can prove things easier
  • Structural conversion check (or a partial one, like in mlang)
  • Totality check: termination/productivity
  • ... more?

... and even next language in the future:

  • Indexed data families, remove the built-in identity type
  • IDE mode like agda2-mode, but I'll go for both Code (primary) and Emacs (secondary)
  • De-morgan cubical primitives (Interval, Path, hcomp, transport, Glue)
  • ... more?
@ice1000 ice1000 added invalid This doesn't seem right wontfix This will not be worked on labels Sep 27, 2019
@ice1000
Copy link
Member Author

ice1000 commented Sep 27, 2019

@AD1024 @zyh3838438zyh 😉

@ice1000 ice1000 pinned this issue Sep 27, 2019
@owo-bot
Copy link
Member

owo-bot commented Sep 30, 2019

OwO

@anqurvanillapy
Copy link
Member

Typecheck ok gives 🐮🍺, and qutting REPL gives 🍵.

@ice1000
Copy link
Member Author

ice1000 commented Nov 28, 2019

Typecheck ok gives 🐮🍺, and qutting REPL gives 🍵.

I'm not doing this right now -- 🍵 is the output for scope-check failure.
I tried 🌶🐔, but both Windows Terminal & VSCode console cannot display this properly.

@zypeh
Copy link

zypeh commented Aug 11, 2021

May I know is there a reason that you remove the row polymorphism?

I saw it from the Changelog 0.0.2 #1 but I can't find any documentation expressing the reason.

@anqurvanillapy
Copy link
Member

May I know is there a reason that you remove the row polymorphism?

narc-rs is the language that implements core features from Agda, and voile-rs is the one that experiments with row polymorphism and dependent types.

@zypeh
Copy link

zypeh commented Aug 11, 2021

I see, I thought narc-rs would be superseding the voile-rs so I am expecting the row polymorphism feature. Got it!

@ice1000
Copy link
Member Author

ice1000 commented Aug 11, 2021

I see, I thought narc-rs would be superseding the voile-rs so I am expecting the row polymorphism feature. Got it!

I did some minor research in the first year and I've found row polymorphism to be unpleasant in a dependent type setting.

Btw, the effort has been moved to the Aya prover, you can take a look if you're interested. Currently we're working on some UX features and it's going to be published once the module, library, and releasing systems are ready

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
invalid This doesn't seem right wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

4 participants