462 views
PureScript Online Meetup 2021 June 21 ==== @afc has introduced his purescript-ocelot fork (https://github.com/afcondon/purescript-ocelot) (it's technically a fork but really it's just forked to allow it to be stripped down sufficiently to be somewhat decoupled from the CitizenNet build requirements. It lacks an updated README explaining this right now, however) Links arising from that discussion: - [tailwind -> purescript cli](https://github.com/gillchristian/tailwind-purs) - [material design web component implementation](https://github.com/material-components/material-components-web-components) - [messy modal library halogen binding](https://github.com/lunarcast/lunarbox/blob/develop/src/Component/Foreign/Modal.purs) @Mateiadrielrafael is working on a visualizer for a simple logic programming language. He has implemented an interpreter for it a few weeks ago ;-) As we know @Adriel has already built a cool lambda calculus expression visualizer (lunarcast/lunarbox ) so we can expect another nice pictures for sure but we have to wait a bit more to see some examples of visualizations. @alessioprestileo - has just passed the half of the "Pure Script by Example" book. Because his road to PureScript "started" in some sens from the lecture of category theory related book we have stoped and discussed a bit here different aproaches to learning and using the language and concepts related to it. - has implemented a `clean` function for _purescript-language-server_. This change is already merged. Congrats Alessio and thanks for the contribution! - is missing support for local type hints in his IDE. We have discussed shortly in this context how to possilby get these kind of information (by using _type holes_). We have discussed also a bit other debugging tips and how to manage complex types or related problems in day to day programming. @Maynard wondering about the reasons that local definitions are often given less-polymorphic types than they seem they could be. For instance, in ```purescript let id = \a -> a in id "s" /\ id 10.0 ``` the type of `id` will fail to be inferred, because it wants to instantiate the type variable either to `String`, for the first call, or `Number`, for the second, but `String` and `Number` do not unify. As it turns out, this due to the fact that local definitions enjoy two-way type inference; in essence, we gain two-way type inference at the cost of not being able to *infer* new `forall`s within the function body (they can always be introduced manually as needed). Anyway, that's my understanding. @ursi and @Mayard are working on an open source chatting web app. They are using PS on the frontend and the backend! - Their app doesn't limit threads depth so the discussion forms arbitrary conversation tree (to be honest it can be even any DAG). - There are two UIs / visualizations under developement: * https://y.maynards.site/?convo=y-convo-1624306407279-463315 * https://ursi.github.io/y-client/?convo=y-convo-1624306407279-463315 - @ursi has made his own ui framework which bases styling on css variables which depend on each other - The architecture is "event based" - frontend exchanges with the backend events so the event type itself alongside the serialization can be shared. The communication is done over a websocket. - Their nix alternative to spago can grab arbitrary modules from external repos @rhendric - has described shortly introduction of automatic instance name generation (by @JordanMartinez) - the above change allows for a merge of a long standing optimizing PR by Ryan https://github.com/purescript/purescript/pull/3915 - please check the benchmarks included in the PR - they are quite impressive! - shortly described corefn as a possible intermediate format for extra tools for the language.