CARVIEW |
Select Language
HTTP/2 200
date: Fri, 10 Oct 2025 05:30:09 GMT
content-type: text/html; charset=utf-8
cache-control: no-cache
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com github.githubassets.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
referrer-policy: no-referrer-when-downgrade
server-timing: pull_request_layout-fragment;desc="pull_request_layout fragment";dur=305.931087,conversation_content-fragment;desc="conversation_content fragment";dur=374.726286,conversation_sidebar-fragment;desc="conversation_sidebar fragment";dur=201.030174,nginx;desc="NGINX";dur=1.384324,glb;desc="GLB";dur=140.698211
strict-transport-security: max-age=31536000; includeSubdomains; preload
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
x-content-type-options: nosniff
x-frame-options: deny
x-voltron-version: 266d7a9
x-xss-protection: 0
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=YZ0%2F2ztt2yYt%2FyFx3WkNvWZNxm%2FqrIW%2Be9B47M5uJFN6PiPQKHOjhPCHKEHWx6i3YOzG1ZDHojpHDPiLHSzsNT1U0ybLoaQQZJx3m5RdzjwVopyYmGv1KoqGWzaSodVDvI3nN%2Bje3eAD1ar2QQJ8ZRTGAWmn0YbfvKWzeB9AvW97j30zv3yja3GUtuMdrHszbNuti6gvxuHItFkruPX46Klc8QPZuofblmOXqNWF%2F8FB5VEzvQrE9V4HGCHOtnSqv%2B%2BXWhGFFMdZEP3mBsA6gQ%3D%3D--4ZYPAkNee5T9Vikr--aDEXcMpvzOJvlOk6jJpwxw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.144151750.1760074209; Path=/; Domain=github.com; Expires=Sat, 10 Oct 2026 05:30:09 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Sat, 10 Oct 2026 05:30:09 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: 8B9E:2D3FFE:1339C65:17582A7:68E899E1
Add Algebraic Data Type by google-labs-jules[bot] · Pull Request #2 · yukikurage/memento-proto · GitHub
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 0
Add Algebraic Data Type #2
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
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
View task progress at https://jules.google.com/task/7678408138575917680 |
This commit introduces support for user-defined Algebraic Data Types (ADTs) and pattern matching constructs. Key changes include: 1. **Syntax (`Syntax.hs`):** * Added `TAlgebraicData Text` to `Type` for representing ADT types. * Introduced `ConstructorDef Text [Type]` for defining constructors. * Added `DataDef Text [ConstructorDef]` to `Definition` for ADT declarations (e.g., `data MyType [ Cons1 : number -> MyType ];`). * Added `Pattern` (PConstructor, PVar, PWildcard), `Clause`, and `Match Expr [Clause]` to `Expr` for pattern matching expressions (e.g., `branch expr [ (Pattern) -> result_expr ];`). 2. **Parser (`Parser.hs`):** * Implemented parsers for `data` declarations, constructor definitions (name and argument types), and ADT names as types. * Implemented parsers for `branch` expressions, including individual clauses and patterns (constructor, variable, wildcard). * Integrated these new parsers into the existing grammar. 3. **Type Checker (`TypeChecker.hs`):** * Extended `TypeState` to store `AdtInfo` (constructors and their signatures). * **ADT Declaration Processing:** * Added logic to register ADTs and their constructors. Constructor names are added to the global environment with their functional types (e.g., `Cons : T1 -> T2 -> MyADT`). * Implemented type validation for constructor arguments, supporting recursive ADT definitions. * Added checks for ADT/constructor name collisions. * **Pattern Matching Type Checking:** * Implemented type inference for `Match` expressions. * Validated that the scrutinee is an ADT type. * Type-checked patterns against the scrutinee's ADT, binding variables with correct types within each branch. * Ensured all branches of a match expression return a unifiable type. * **Exhaustiveness Checking:** Implemented checks to ensure patterns cover all constructors of an ADT, throwing an error for non-exhaustive matches unless a wildcard or variable pattern is present. * Effects from the scrutinee and the chosen branch are combined for the match expression. 4. **Tests (`examples/`):** * Added `adt_simple_def.mmt`: Basic ADT definition and usage. * Added `adt_exhaustiveness.mmt`: Testing exhaustiveness checks (success and failure cases). * Added `adt_type_errors.mmt`: Testing various type errors in ADT definitions and pattern matching (branch type mismatch, arity errors, etc.). * Added `adt_recursive.mmt`: Testing recursive ADT definitions and usage (e.g., a list). These changes allow you to define complex data structures and deconstruct them safely using pattern matching, enhancing the language's expressiveness and type safety.
This commit introduces support for user-defined Algebraic Data Types (ADTs) and pattern matching constructs. Key changes include: 1. **Syntax (`Syntax.hs`):** * Added `TAlgebraicData Text` to `Type` for representing ADT types. * Introduced `ConstructorDef Text [Type]` for defining constructors. * Added `DataDef Text [ConstructorDef]` to `Definition` for ADT declarations (e.g., `data MyType [ Cons1 : number -> MyType ];`). * Added `Pattern` (PConstructor, PVar, PWildcard), `Clause`, and `Match Expr [Clause]` to `Expr` for pattern matching expressions (e.g., `branch expr [ (Pattern) -> result_expr ];`). 2. **Parser (`Parser.hs`):** * Implemented parsers for `data` declarations, constructor definitions (name and argument types), and ADT names as types. * Implemented parsers for `branch` expressions, including individual clauses and patterns (constructor, variable, wildcard). * Integrated these new parsers into the existing grammar. 3. **Type Checker (`TypeChecker.hs`):** * Extended `TypeState` to store `AdtInfo` (constructors and their signatures). * **ADT Declaration Processing:** * Added logic to register ADTs and their constructors. Constructor names are added to the global environment with their functional types (e.g., `Cons : T1 -> T2 -> MyADT`). * Implemented type validation for constructor arguments, supporting recursive ADT definitions. * Added checks for ADT/constructor name collisions. * **Pattern Matching Type Checking:** * Implemented type inference for `Match` expressions. * Validated that the scrutinee is an ADT type. * Type-checked patterns against the scrutinee's ADT, binding variables with correct types within each branch. * Ensured all branches of a match expression return a unifiable type. * **Exhaustiveness Checking:** Implemented checks to ensure patterns cover all constructors of an ADT, throwing an error for non-exhaustive matches unless a wildcard or variable pattern is present. * Effects from the scrutinee and the chosen branch are combined for the match expression. 4. **Tests (`examples/`):** * Added `adt_simple_def.mmt`: Basic ADT definition and usage. * Added `adt_exhaustiveness.mmt`: Testing exhaustiveness checks (success and failure cases). * Added `adt_type_errors.mmt`: Testing various type errors in ADT definitions and pattern matching (branch type mismatch, arity errors, etc.). * Added `adt_recursive.mmt`: Testing recursive ADT definitions and usage (e.g., a list). These changes allow you to define complex data structures and deconstruct them safely using pattern matching, enhancing the language's expressiveness and type safety.
I tried my best to create a pull request, but it seems like something went wrong. Please create a pull request manually from the branch algebraic-data-types. The code changes have already been pushed. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
You can’t perform that action at this time.
depends on #1
のちのちタプルを追加するので一階だけで良い
パターンマッチ
網羅性チェックを入れて欲しい