HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
paf31
purescript-purview
PureScript2018–2026
paf31 / purescript-purview · Archived

purescript-purview

A UI library based on the incremental lambda calculus

3Distinct people
4Mentions
0Explicit recommenders
112GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A UI library based on the incremental lambda calculus

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:03:16 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year4 dated mentions

Observed mentions: 2018-08-26 22:01:58 UTC to 2026-06-15 17:40:32 UTC.

0122018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC000
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC202

What Hacker News says

4 sources
Yeah higher kinded types, Mr. Freeman's Purview demonstrates the idea applied to UI: https://github.com/paf31/purescript-purview I'm not referring to FRP, just a bunch of functions that can render a frame of UI if you pass in all the "internal state" like cursor position/selection/scroll in addition to the typical UI parameters. Xilem and others are doing a good job of making a lot of things modular, but I haven't seen one actually separate how the UI state is stored from the rendering of the UI.
In The state of building user interfaces in Rust
Everyone seems to be converging on React/Elm arch for UI. I saw a paper years ago for incremental lambda calculus (https://inc-lc.github.io) that I feel addresses the fundamental problem here more honestly. It's mostly intended for optimizing repeated computations after small changes to the inputs, but I think it applies nicely to UI. Our data model needs to be a change structure along with our UI model. We write a function from our data model to the UI model just like React, but we also get a function from deltas on the data model to deltas on the UI model. The main thing missing that we would need for UI is since we get a stream of deltas on both the data model and UI model (scrolling, selecting, etc) we need to merge them. This way we don't have to zipper together each "frame" of the output tree trying to figure out which bit goes to w
Read the rest
hich other bit, we get an explicit delta saying "the 5th thing got deleted". You do probably need a language with HKT for this. I mentioned this to Phil Freeman years ago and he did a prototype in Purescript, but I haven't seen it anywhere else: https://github.com/paf31/purescript-purview Another thing I'd like to see is a _truly_ immediate mode framework where each widget is a pure function to render it given its state, and it's up to the user to manage the UI state (scroll position, text cursor location, etc), you can mix it in with/ your data model, or whatever. Even egui/etc aren't truly immediate as they need to keep some sort of stable identity for events, UI state and focus. You could of course build a React like thing on top of that, but it would be helpful to have that for experimentation with wildly different state models without having to reinvent the text box and everything yet again. I've started some experimentation w/ this in Haskell and it's going well so far.
In The state of building user interfaces in Rust
Tangential, but some very cool things are happening in Purescript-land, especially when it comes to row types or UI research: * https://github.com/natefaubion/purescript-variant (open variant types) * https://github.com/natefaubion/purescript-run (extensible effects implementation based on purescript-variant) * https://github.com/ajnsit/purescript-concur (time-reifying UI framework, there's also a Haskell and a JS implementation of Concur) * https://github.com/arthurxavierx/purescript-comonad-ui-todos (comonadic UIs) * https://github.com/paf31/purescript-purview (incremental lambda calculus UI library, this is mind blowing!) * https://github.com/paf31/purescript-sdom (declarative diff-less UI library) There's also [0], a mature UI framework used in production at Slamdata. Lumi [1] are writing their frontend in Purescript. What I especiall
Read the rest
y like about Purescript is that the community is open to experimentation, while at the same time not being afraid to backtrack when things turn out to be a bad idea, like the row tagged Eff monad. The recent addition of QualifiedDo is a good example of this, which allows you to rebind >>= in the following manner: test :: forall m a. I.IxMonad m => m a a String test = I.do a <- I.pure "test" b <- I.pure "test" I.pure (a <> b) Imo, there simply is no better way for a Haskeller to target JS at the moment. [0] https://github.com/slamdata/purescript-halogen [1] https://www.lumi.com
In Purescript-native can now target Golang
That's cool. I've quickly learned that I much more enjoy scrapping redundant code and relying even more on the type system, with things like Higher-kinded types, GADTs, etc. Elm for me fills the niche of stepping stone into Pure FP (pure as in purity). It's a language I would be able to convince my coworkers to try out, and once they've gotten their feet wet, they can move onto PureScript or GHCJS. The reason why stopping at Elm, IMHO, is bad, is that it does not foster innovation and trying out things, but restricts itself purely to the subset of what the core team has discovered/learned. This makes it impossible to try out new exciting things like this "A proof-of-concept UI library based on the incremental lambda calculus"[0] that does away with the need for VDOM diffing, and other interesting things. Don't get me wrong, there is certa
Read the rest
inly appeal to having a simple language that everyone can quickly master (like Go), but it isn't the be all end all. [0] https://github.com/paf31/purescript-purview
In What I've learned since quitting Elm

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.