{"id":13609469,"url":"https://github.com/egison/egison","last_synced_at":"2025-10-06T12:58:16.399Z","repository":{"id":6960530,"uuid":"8212790","full_name":"egison/egison","owner":"egison","description":"The Egison Programming Language","archived":false,"fork":false,"pushed_at":"2022-12-22T23:19:05.000Z","size":8911,"stargazers_count":921,"open_issues_count":22,"forks_count":31,"subscribers_count":44,"default_branch":"master","last_synced_at":"2025-05-23T19:05:53.785Z","etag":null,"topics":["computer-algebra-system","differential-geometry","egison","functional-programming","hacktoberfest","pattern-matching","programming-language","tensor"],"latest_commit_sha":null,"homepage":"https://www.egison.org","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/egison.png","metadata":{"files":{"readme":"README.md","changelog":"Changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-02-15T04:35:21.000Z","updated_at":"2025-05-17T05:42:34.000Z","dependencies_parsed_at":"2023-01-11T20:10:09.064Z","dependency_job_id":null,"html_url":"https://github.com/egison/egison","commit_stats":null,"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"purl":"pkg:github/egison/egison","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egison%2Fegison","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egison%2Fegison/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egison%2Fegison/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egison%2Fegison/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/egison","download_url":"https://codeload.github.com/egison/egison/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/egison%2Fegison/sbom","scorecard":{"id":368879,"data":{"date":"2025-08-11","repo":{"name":"github.com/egison/egison","commit":"9cd02eca2c3c5716471d18c35adf4f6286e9e259"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-18T12:31:00.555Z","repository_id":6960530,"created_at":"2025-08-18T12:31:00.555Z","updated_at":"2025-08-18T12:31:00.555Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278614466,"owners_count":26015967,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-algebra-system","differential-geometry","egison","functional-programming","hacktoberfest","pattern-matching","programming-language","tensor"],"created_at":"2024-08-01T19:01:35.176Z","updated_at":"2025-10-06T12:58:16.380Z","avatar_url":"https://github.com/egison.png","language":"Haskell","readme":"# The Egison Programming Language\n[![Build Status](https://travis-ci.org/egison/egison.svg?branch=master)](https://travis-ci.org/egison/egison)\n\nEgison is a functional programming language featuring its expressive pattern-matching facility.\nEgison allows users to define efficient and expressive pattern-matching methods for arbitrary user-defined data types including non-free data types such as lists, multisets, sets, trees, graphs, and mathematical expressions.\nThis is the repository of the interpreter of Egison.\n\nFor more information, visit \u003ca target=\"_blank\" href=\"https://www.egison.org\"\u003eour website\u003c/a\u003e.\n\n## Refereed Papers\n\n### Pattern Matching\n\n* Satoshi Egi, Yuichi Nishiwaki: [Non-linear Pattern Matching with Backtracking for Non-free Data Types](https://arxiv.org/abs/1808.10603) (APLAS 2018)\n* Satoshi Egi, Yuichi Nishiwaki: [Functional Programming in Pattern-Match-Oriented Programming Style](https://doi.org/10.22152/programming-journal.org/2020/4/7) (\u003cprogramming\u003e 2020)\n\n### Tensor Index Notation\n\n* Satoshi Egi: [Scalar and Tensor Parameters for Importing Tensor Index Notation including Einstein Summation Notation](https://arxiv.org/abs/1702.06343) (Scheme Workshop 2017)\n\n## Non-Linear Pattern Matching for Non-Free Data Types\n\nWe can use non-linear pattern matching for non-free data types in Egison.\nA non-free data type is a data type whose data have no canonical form, or a standard way to represent that object.\nFor example, multisets are non-free data types because a multiset {a,b,b} has two other syntastically different representations: {b,a,b} and {b,b,a}.\nExpressive pattern matching for these data types enables us to write elegant programs.\n\n### Twin Primes\n\nWe can use pattern matching for enumeration.\nThe following code enumerates all twin primes from the infinite list of prime numbers with pattern matching!\n\n```hs\ndef twinPrimes :=\n  matchAll primes as list integer with\n  | _ ++ $p :: #(p + 2) :: _ -\u003e (p, p + 2)\n\ntake 8 twinPrimes\n-- [(3, 5), (5, 7), (11, 13), (17, 19), (29, 31), (41, 43), (59, 61), (71, 73)]\n```\n\n### Poker Hands\n\nThe following code is a program that determines poker-hands written in Egison.\nAll hands are expressed in a single pattern.\n\n```hs\ndef poker cs :=\n  match cs as multiset card with\n  | card $s $n :: card #s #(n-1) :: card #s #(n-2) :: card #s #(n-3) :: card #s #(n-4) :: _\n    -\u003e \"Straight flush\"\n  | card _ $n :: card _ #n :: card _ #n :: card _ #n :: _ :: []\n    -\u003e \"Four of a kind\"\n  | card _ $m :: card _ #m :: card _ #m :: card _ $n :: card _ #n :: []\n    -\u003e \"Full house\"\n  | card $s _ :: card #s _ :: card #s _ :: card #s _ :: card #s _ :: []\n    -\u003e \"Flush\"\n  | card _ $n :: card _ #(n-1) :: card _ #(n-2) :: card _ #(n-3) :: card _ #(n-4) :: []\n    -\u003e \"Straight\"\n  | card _ $n :: card _ #n :: card _ #n :: _ :: _ :: []\n    -\u003e \"Three of a kind\"\n  | card _ $m :: card _ #m :: card _ $n :: card _ #n :: _ :: []\n    -\u003e \"Two pair\"\n  | card _ $n :: card _ #n :: _ :: _ :: _ :: []\n    -\u003e \"One pair\"\n  | _ :: _ :: _ :: _ :: _ :: [] -\u003e \"Nothing\"\n```\n\n### Graphs\n\nWe can pattern-match against graphs.\nWe can write a program to solve the travelling salesman problem in a single pattern-matching expression.\n\n```hs\ndef graph := multiset (string, multiset (string, integer))\n\ndef graphData :=\n  [(\"Berlin\", [(\"New York\", 14), (\"London\", 2), (\"Tokyo\", 14), (\"Vancouver\", 13)]),\n   (\"New York\", [(\"Berlin\", 14), (\"London\", 12), (\"Tokyo\", 18), (\"Vancouver\", 6)]),\n   (\"London\", [(\"Berlin\", 2), (\"New York\", 12), (\"Tokyo\", 15), (\"Vancouver\", 10)]),\n   (\"Tokyo\", [(\"Berlin\", 14), (\"New York\", 18), (\"London\", 15), (\"Vancouver\", 12)]),\n   (\"Vancouver\", [(\"Berlin\", 13), (\"New York\", 6), (\"London\", 10), (\"Tokyo\", 12)])]\n\ndef trips :=\n  let n := length graphData in\n    matchAll graphData as graph with\n    | (#\"Berlin\", (($s_1,$p_1) : _)) ::\n        loop $i (2, n - 1)\n          ((#s_(i - 1), ($s_i, $p_i) :: _) :: ...)\n          ((#s_(n - 1), (#\"Berlin\" \u0026 $s_n, $p_n) :: _) :: [])\n    -\u003e sum (map (\\i -\u003e p_i) [1..n]), map (\\i -\u003e s_i) [1..n]\n\ncar (sortBy (\\(_, x), (_, y) -\u003e compare x y)) trips)\n-- ([\"London\", \"New York\", \"Vancouver\", \"Tokyo\",\" Berlin\"], 46)\n```\n\n## Egison as a Computer Algebra System\n\nAs an application of Egison pattern matching, we have implemented a computer algebra system on Egison.\nThe most part of this computer algebra system is written in Egison and extensible using Egison.\n\n### Symbolic Algebra\n\nEgison treats unbound variables as symbols.\n\n```\n\u003e x\nx\n\u003e (x + y)^2\nx^2 + 2 * x * y + y^2\n\u003e (x + y)^4\nx^4 + 4 * x^3 * y + 6 * x^2 * y^2 + 4 * x * y^3 + y^4\n```\n\nWe can handle algebraic numbers, too.\n\n* [Definition of `sqrt` in `root.egi`](https://github.com/egison/egison/blob/master/lib/math/algebra/root.egi)\n\n```\n\u003e sqrt x\nsqrt x\n\u003e sqrt 2\nsqrt 2\n\u003e x + sqrt y\nx + sqrt y\n```\n\n### Complex Numbers\n\nThe symbol `i` is defined to rewrite `i^2` to `-1` in Egison library.\n\n* [Rewriting rule for `i` in `normalize.egi`](https://github.com/egison/egison/blob/master/lib/math/normalize.egi)\n\n```\n\u003e i * i\n-1\n\u003e (1 + i) * (1 + i)\n2 * i\n\u003e (x + y * i) * (x + y * i)\nx^2 + 2 * x * y * i - y^2\n```\n\n### Square Root\n\nThe rewriting rule for `sqrt` is also defined in Egison library.\n\n* [Rewriting rule for `sqrt` in `normalize.egi`](https://github.com/egison/egison/blob/master/lib/math/normalize.egi)\n\n```\n\u003e sqrt 2 * sqrt 2\n2\n\u003e sqrt 6 * sqrt 10\n2 * sqrt 15\n\u003e sqrt (x * y) * sqrt (2 * x)\nx * sqrt 2 * sqrt y\n```\n\n### The 5th Roots of Unity\n\nThe following is a sample to calculate the 5th roots of unity.\n\n* [Definition of `q-f'` in `equations.egi`](https://github.com/egison/egison/blob/master/lib/math/algebra/equations.egi)\n\n```\n\u003e qF' 1 1 (-1)\n((-1 + sqrt 5) / 2, (-1 - sqrt 5) / 2)\n\u003e def t := fst (qF' 1 1 (-1))\n\u003e qF' 1 (-t) 1\n((-1 + sqrt 5 + sqrt 2 * sqrt (-5 - sqrt 5)) / 4, (-1 + sqrt 5 - sqrt 2 * sqrt (-5 - sqrt 5)) / 4)\n\u003e def z := fst (qF' 1 (-t) 1)\n\u003e z\n(-1 + sqrt 5 + sqrt 2 * sqrt (-5 - sqrt 5)) / 4\n\u003e z ^ 5\n1\n```\n\n### Differentiation\n\nWe can implement differentiation easily in Egison.\n\n* [Definition of `d/d` in `derivative.egi`](https://github.com/egison/egison/blob/master/lib/math/analysis/derivative.egi)\n\n```\n\u003e d/d (x ^ 3) x\n3 * x^2\n\u003e d/d (e ^ (i * x)) x\nexp (x * i) * i\n\u003e d/d (d/d (log x) x) x\n-1 / x^2\n\u003e d/d (cos x * sin x) x\n-2 * (sin x)^2 + 1\n```\n\n### Taylor Expansion\n\nThe following sample executes Taylor expansion on Egison.\nWe verify [Euler's formula](https://en.wikipedia.org/wiki/Euler%27s_formula) in the following sample.\n\n* [Definition of `taylor-expansion` in `derivative.egi`](https://github.com/egison/egison/blob/master/lib/math/analysis/derivative.egi)\n\n```\n\u003e take 8 (taylorExpansion (exp (i * x)) x 0)\n[1, x * i, - x^2 / 2, - x^3 * i / 6, x^4 / 24, x^5 * i / 120, - x^6 / 720, - x^7 * i / 5040]\n\u003e take 8 (taylorExpansion (cos x) x 0)\n[1, 0, - x^2 / 2, 0, x^4 / 24, 0, - x^6 / 720, 0]\n\u003e take 8 (taylorExpansion (i * sin x) x 0)\n[0, x * i, 0, - x^3 * i / 6, 0, x^5 * i / 120, 0, - x^7 * i / 5040]\n\u003e take 8 (map2 (+) (taylorExpansion (cos x) x 0) (taylorExpansion (i * sin x) x 0))\n[1, x * i, - x^2 / 2, - x^3 * i / 6, x^4 / 24, x^5 * i / 120, - x^6 / 720, - x^7 * i / 5040]\n```\n\n### Tensor Index Notation\n\nEgison supports tesnsor index notation.\nWe can use [Einstein notation](https://en.wikipedia.org/wiki/Einstein_notation) to express arithmetic operations between tensors.\n\nThe method for importing tensor index notation into programming is discussed in [Egison tensor paper](https://arxiv.org/abs/1702.06343).\n\nThe following sample is from [Riemann Curvature Tensor of S2 - Egison Mathematics Notebook](https://www.egison.org/math/riemann-curvature-tensor-of-S2.html).\n\n\n```hs\n-- Parameters\ndef x := [| θ, φ |]\n\ndef X := [| r * (sin θ) * (cos φ) -- x\n      , r * (sin θ) * (sin φ) -- y\n      , r * (cos θ)           -- z\n      |]\n\ndef e_i_j := (∂/∂ X_j x~i)\n\n-- Metric tensors\ndef g_i_j := generateTensor (\\x y -\u003e V.* e_x_# e_y_#) [2, 2]\ndef g~i~j := M.inverse g_#_#\n\ng_#_# -- [| [| r^2, 0 |], [| 0, r^2 * (sin θ)^2 |] |]_#_#\ng~#~# -- [| [| 1 / r^2, 0 |], [| 0, 1 / (r^2 * (sin θ)^2) |] |]~#~#\n\n-- Christoffel symbols\ndef Γ_i_j_k := (1 / 2) * (∂/∂ g_i_k x~j + ∂/∂ g_i_j x~k - ∂/∂ g_j_k x~i)\n\nΓ_1_#_# -- [| [| 0, 0 |], [| 0, -1 * r^2 * (sin θ) * (cos θ) |] |]_#_#\nΓ_2_#_# -- [| [| 0, r^2 * (sin θ) * (cos θ) |], [| r^2 * (sin θ) * (cos θ), 0 |] |]_#_#\n\ndef Γ~i_j_k := withSymbols [m]\n  g~i~m . Γ_m_j_k\n\nΓ~1_#_# -- [| [| 0, 0 |], [| 0, -1 * (sin θ) * (cos θ) |] |]_#_#\nΓ~2_#_# -- [| [| 0, (cos θ) / (sin θ) |], [| (cos θ) / (sin θ), 0 |] |]_#_#\n\n-- Riemann curvature\ndef R~i_j_k_l := withSymbols [m]\n  ∂/∂ Γ~i_j_l x~k - ∂/∂ Γ~i_j_k x~l + Γ~m_j_l . Γ~i_m_k - Γ~m_j_k . Γ~i_m_l\n\nR~#_#_1_1 -- [| [| 0, 0 |], [| 0, 0 |] |]~#_#\nR~#_#_1_2 -- [| [| 0, (sin θ)^2 |], [| -1, 0 |] |]~#_#\nR~#_#_2_1 -- [| [| 0, -1 * (sin θ)^2 |], [| 1, 0 |] |]~#_#\nR~#_#_2_2 -- [| [| 0, 0 |], [| 0, 0 |] |]~#_#\n```\n\n### Differential Forms\n\nBy designing the index completion rules for omitted indices, we can use the above notation to express a calculation handling the differential forms.\n\nThe following sample is from [Curvature Form - Egison Mathematics Notebook](https://www.egison.org/math/curvature-form.html).\n\n```hs\n-- Parameters and metric tensor\ndef x := [| θ, φ |]\n\ndef g_i_j := [| [| r^2, 0 |], [| 0, r^2 * (sin θ)^2 |] |]_i_j\ndef g~i~j := [| [| 1 / r^2, 0 |], [| 0, 1 / (r^2 * (sin θ)^2) |] |]~i~j\n\n-- Christoffel symbols\ndef Γ_j_l_k := (1 / 2) * (∂/∂ g_j_l x~k + ∂/∂ g_j_k x~l - ∂/∂ g_k_l x~j)\n\ndef Γ~i_k_l := withSymbols [j] g~i~j . Γ_j_l_k\n\n-- Exterior derivative\ndef d %t := !(flip ∂/∂) x t\n\n-- Wedge product\ninfixl expression 7 ∧\n\ndef (∧) %x %y := x !. y\n\n-- Connection form\ndef ω~i_j := Γ~i_j_#\n\n-- Curvature form\ndef Ω~i_j := withSymbols [k]\n  antisymmetrize (d ω~i_j + ω~i_k ∧ ω~k_j)\n\nΩ~#_#_1_1 -- [| [| 0, 0 |], [| 0, 0 |] |]~#_#\nΩ~#_#_1_2 -- [| [| 0, (sin θ)^2  / 2|], [| -1 / 2, 0 |] |]~#_#\nΩ~#_#_2_1 -- [| [| 0, -1 * (sin θ)^2 / 2 |], [| 1 / 2, 0 |] |]~#_#\nΩ~#_#_2_2 -- [| [| 0, 0 |], [| 0, 0 |] |]~#_#\n\n```\n\n### Egison Mathematics Notebook\n\nHere are more samples.\n\n* [Egison Mathematics Notebook](https://www.egison.org/math/)\n\n## Comparison with Related Work\n\nThere are \u003ca target=\"_blank\" href=\"https://ghc.haskell.org/trac/ghc/wiki/ViewPatterns#Relatedwork\"\u003ea lot of existing work\u003c/a\u003e for pattern matching.\n\nThe advantage of Egison is that it fulfills the following two requirements at the same time.\n\n1. Efficient backtracking algorithm for non-linear pattern matching.\n2. Extensibility of patterns.\n\nAdditionally, it fulfills the following requirements.\n\n3. Polymorphism of patterns.\n4. Pattern matching with infinitely many results.\n\nCheck out \u003ca target=\"_blank\" href=\"https://arxiv.org/abs/1808.10603\"\u003eour paper\u003c/a\u003e for details.\n\n## Installation\n\n[Installation guide](https://egison.readthedocs.io/en/latest/reference/install.html) is available on our website.\n\nIf you are a beginner of Egison, it would be better to install \u003ca target=\"_blank\" href=\"https://github.com/egison/egison-tutorial\"\u003e`egison-tutorial`\u003c/a\u003e as well.\n\nWe also have [online interpreter](http://console.egison.org) and [online tutorial](http://try.egison.org/).\nEnjoy!\n\n## Notes for Developers\n\nYou can build Egison as follows:\n```\n$ stack init\n$ stack build --fast\n```\n\nFor testing, see [test/README.md](test/README.md).\n\n## Community\n\nWe have \u003ca target=\"_blank\" href=\"https://www.egison.org/community.html\"\u003ea mailing list\u003c/a\u003e.\nPlease join us!\n\nWe are on \u003ca target=\"_blank\" href=\"https://twitter.com/Egison_Lang\"\u003eTwitter\u003c/a\u003e.\nPlease follow us.\n\n## License\n\nEgison is released under the [MIT license](https://github.com/egison/egison/blob/master/LICENSE).\n\nWe used [husk-scheme](http://justinethier.github.io/husk-scheme/) by Justin Ethier as reference to implement the base part of the previous version of the interpreter.\n\n## Sponsors\n\nEgison is sponsored by [Rakuten, Inc.](http://global.rakuten.com/corp/) and [Rakuten Institute of Technology](http://rit.rakuten.co.jp/).\n","funding_links":[],"categories":["Uncategorized","Haskell"],"sub_categories":["Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegison%2Fegison","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fegison%2Fegison","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fegison%2Fegison/lists"}