Skip to first unread message

Bryan Grounds

Jul 3, 2021, 9:19:33 PM7/3/21
to SeaHUG
Towards the end of today's meetup, we decided to start a group project for implementing chess.
Here's a starting point.

Dave Compton

Jul 4, 2021, 9:25:09 AM7/4/21
to Bryan Grounds, SeaHUG
I missed the meetup but would like to know more about the group project (goals, design options/choices, etc)

You received this message because you are subscribed to the Google Groups "SeaHUG" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
To view this discussion on the web visit

Bryan Grounds

Jul 8, 2021, 10:48:49 PM7/8/21
to Dave Compton, SeaHUG
Hi Dave :)

My primary goals are to get smart people working and learning together on a project with broad appeal. Chess was fairly arbitrary, but seems like an interesting enough problem.

I think it'd be interesting to
* Write the program in a pure functional style
* Apply category theoretic abstractions
* Develop features that leverage the strengths of individual contributors (we have some members with expertise in graphics, machine learning, distributed systems, game programming, ui design, etc)

Maybe the primary goal is to have fun learning and programming together :)

Aaron Vargo

Jul 9, 2021, 3:59:33 AM7/9/21
to SeaHUG
To be more specific than "chess", I was thinking we could make a chess database program similar to Chessbase or Scid, with a web UI which could potentially reuse components of lichess, particularly There are a few directions we could go with such an app, but more on that later (er, tomorrow. too tired now). If we could make something usable that would be nice, but I think the goal would primarily be as Bryan says. In my case I'd like to learn more about web frontends, but in particular I'd like to explore the reflex/ghcjs space more, and maybe contribute some generally useful code to it (I have a couple things in mind that seem to be missing). Bryan suggested we use purescript, but the potential of Haskell everywhere seems more interesting to me. Also, while being able to compile to JS is great for easy distribution, I'm imagining the app primarily being used natively, so that it can e.g. use a natively running (chess) engine. Maybe that's a point in favor of reflex as well.

I know you've used reflex quite a bit Dave (or at least, you gave some great talks on it at past meetings), so if you'd be interested in contributing then a reflex app might be a good fit for our different strengths.

In any case, I've started creating a reflex project with a couple additional bits of infrastructure that don't come with it out of the box (e.g. support for assets, and compile-time prerendering via TH). It's a bit of a mess at the moment, but I'll upload it once I clean it up some.

Dave Compton

Jul 11, 2021, 8:14:09 PM7/11/21
to Aaron Vargo, SeaHUG
Hi Aaron & Bryan.

Good to hear from both of you!

It sounds like the plan is to loosely work together on one or more functional programming projects that focus on aspects of chess.

Possible features include:

  • A frontend (web based?) game display.   This could be written using purescript, reflex, miso, or something else.   

  • A backend database to record game results.
  • A backend database to manage players.

  • A "referee" that knows the rules of chess and could track whose turn it is, whether or not a move is legal, implement a timer, determine a winner, etc.   This could be frontend or backend or some combination of both.
  • A chess "engine" that could play automatically.  

  • Perhaps some wagering mechanism.   

  • A protocol for talking between frontend and backend or maybe even peer to peer.

These are just brainstorming thoughts, written before looking at the references that Aaron mentioned (lichess, scid, chessbase, chessground).    I have not even played much chess but I *did* watch "The Queen's Gambit" last year.   Does this come close to what others have in mind?

- Dave

Bryan Grounds

Jul 16, 2021, 6:37:07 PM7/16/21
to Dave Compton, Aaron Vargo, SeaHUG
Hey Dave,

I'd personally drop the chess constraint. I'm interested in working on functional programming projects with fellow haskellers :)

Reply all
Reply to author
0 new messages