semantic-source
milewski-ctfp-pdf
semantic-source | milewski-ctfp-pdf | |
---|---|---|
23 | 79 | |
8,942 | 10,914 | |
0.3% | - | |
8.9 | 5.0 | |
about 2 months ago | 13 days ago | |
Haskell | TeX | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
semantic-source
-
The Meaning of Monad in MonadTrans
One production example I know: GitHub code navigation is written in Haskell https://github.com/github/semantic
- Semantic: Parsing, analyzing, and comparing source code across many languages
-
How to Get Started with Tree-Sitter
ah, easy. it's because support has not been added into https://github.com/github/semantic which is the tech that powers the GitHub UI. Adding support is pretty easy/mainly glue code [1] that imports the tree sitter API.
[1] https://github.com/github/semantic/blob/793a876ae45d38a6bd17...
- Scala community now has control over the official Scala grammar for tree-sitter 🎉
- 2022 State of Haskell Survey
-
11 Companies That Use Haskell in Production
GitHub used Haskell for implementing Semantic, a command-line tool for parsing, analyzing, and comparing source code.
-
What happened with GitHub's semantic project?
As far as engineering effort, you can read this GitHub comment for an overview of where we’d like to take the project in the future. The tl;dr here is that the open sum type view of the world made it very concise to fold over syntax trees (since such a view of data is ultimately unityped, recursion schemes Just Work), but the tradeoff thus associated—namely, that you have to parse a concrete syntax tree into an open-sum view (a complicated and painful-to-read process), that you can never really be sure how a given syntax tree is shaped, and that the types don’t help you nearly as much as they could—proved to be too onerous to deal with. Going forward, we’re generating syntax types from the AST once per target language, and working on an abstraction (probably via this generated code; I made five separate efforts at using Generics for this, and failed every time) that recovers at least some of the convenience of recursion schemes. It turns out that recursion schemes over a mutually recursive syntax tree—as pretty much every language’s syntax trees are, in practice—are pretty much an unsolved problem, especially when extended to languages like TypeScript, which have hundreds of different syntax nodes.
-
Stack Graphs
Meanwhile their Tree-Sitter-based semantic parser[1] looks abandoned. There is even rotting for years pull request[2] adding support of the same stack graphs into it.
[1] https://github.com/github/semantic
[2] https://github.com/github/semantic/pull/535
-
Cardano relying on Haskell is not bad at all
The semantic team at GitHub uses it for statically analyzing the dozens of languages that end up in GitHub repositories: https://github.com/github/semantic/blob/eaf13783838861fe5eb6cd46d59354774a8eb88d/docs/why-haskell.md
-
7 Useful Tools Written in Haskell
Yesterday I was looking for some examples of projects using tree-sitter (which is C) when I found GitHub's semantic, used to analyze and compare source code, and written in Haskell: https://github.com/github/semantic/
milewski-ctfp-pdf
-
The cruelty of teaching computing science (1988)
>> He has to be able to think in terms of conceptual hierarchies that are much deeper than a single mind ever needed to face before. Compared to that number of semantic levels, the average mathematical theory is almost flat.
> ... is he being unrealistic about programmers here, or does he not have exposure to what a mathematician would consider Mathematics?
As with any sweeping statement, Dijkstra's assertion is not universally applicable to all programmers. However, for some definition of sufficiently skilled programmer, it is correct if one considers the subset of mathematics applicable to provably correct programs. To wit:
https://bartoszmilewski.com/2014/10/28/category-theory-for-p...
-
A New Type of Neural Network Is More Interpretable
Category theory was a godsend from Milewski, esp. his PDF is great! https://bartoszmilewski.com/2014/10/28/category-theory-for-p...
Maybe you can add a little and offer ressources from your background?
-
Ask HN: What resources do you recommend for learning Haskell?
I recently started reading Bartosz Milewski's Category Theory for Programmers[0] and while it's less about Haskell directly and more about the ideas behind it, I found it did a much better job at explaining Haskell to me than any other introduction I read before. At least I'm able to appreciate Typing the Technical Interview[1] now. :-)
[0]: https://github.com/hmemcpy/milewski-ctfp-pdf
[1]: https://aphyr.com/posts/342-typing-the-technical-interview
- Category Theory Using String Diagrams (2014)
-
reflect-cpp - Now with compile time extraction of field names from structs and enums using C++-20.
Category Theory for Programmers by Bartosz Milewski (https://github.com/hmemcpy/milewski-ctfp-pdf/releases)
-
Category Theory for Programming
Strangely similar name to the well-known 'Category Theory for Programmers'
https://github.com/hmemcpy/milewski-ctfp-pdf
-
Polynomial Functors: A Mathematical Theory of Interaction [pdf]
There's this, but the programmer doesn't have to be working:
https://bartoszmilewski.com/2014/10/28/category-theory-for-p...
- Monads vs Classes
- 今天看到的,是真的离谱。
-
Reading recomendations on Category Theory
Milewski's "Category Theory for Programmers".
What are some alternatives?
diffsitter - A tree-sitter based AST difftool to get meaningful semantic diffs
web-dev-golang-anti-textbook - Learn how to write webapps without a framework in Go.
massiv - Efficient Haskell Arrays featuring Parallel computation
practicing-ruby-manuscripts - Collection of source manuscripts for publicly released Practicing Ruby articles
cantor-pairing - Convert data to and from a natural number representation
owasp-masvs - The OWASP MASVS (Mobile Application Security Verification Standard) is the industry standard for mobile app security.
refined - Refinement types with static checking
Publications - Misc. publications, conference slides, etc. For more, go to http://BartoszMilewski.com
Glean - System for collecting, deriving and working with facts about source code.
paip-lisp - Lisp code for the textbook "Paradigms of Artificial Intelligence Programming"
jump - Jump start your Haskell development
applied-fp-course - Applied Functional Programming Course - Move from exercises to a working app!