-
Go to
~/.stack/global-project/stack.yaml
and change theresolver:
section tolts-10.3
. -
Add:
- https://hackage.haskell.org/package/ghc-mod-5.9.0.0/candidate/ghc-mod-5.9.0.0.tar.gz
- cabal-helper-0.8.0.0
{-# LANGUAGE RankNTypes #-} | |
{-# LANGUAGE TupleSections #-} | |
{-# LANGUAGE TypeOperators #-} | |
{-# LANGUAGE DataKinds #-} | |
{-# LANGUAGE TypeInType #-} | |
{-# LANGUAGE GADTs #-} | |
module Data.Optics where | |
class Profunctor p where |
JavaScript █████████████████░░░ なかなか Pretty Good | |
HTML ███████████░░░░░░░░░ まあまあ Not Bad | |
CSS █████████████░░░░░░░ そこそこ Alright | |
Vue.js ███████████████░░░░░ それなり Good | |
Muscle ██░░░░░░░░░░░░░░░░░░ よわよわ Weak | |
Guitar ███████████████████░ つよつよ Strong |
Monads and delimited control are very closely related, so it isn’t too hard to understand them in terms of one another. From a monadic point of view, the big idea is that if you have the computation m >>= f
, then f
is m
’s continuation. It’s the function that is called with m
’s result to continue execution after m
returns.
If you have a long chain of binds, the continuation is just the composition of all of them. So, for example, if you have
m >>= f >>= g >>= h
then the continuation of m
is f >=> g >=> h
. Likewise, the continuation of m >>= f
is g >=> h
.
blah blah blah more things here
From my experience fundraising in Haskell, companies who use it all seem to have suffered from the same two flavors of problem:
A rockstar comes in, dumps mindblowing code everywhere that dazzles the rest of the team and fools the product leads with pseudo-productivity until the rockstar leaves or finally wakes up. Cue the rest of the team death-marching for the next year or few years as the team attempts to juggle feature additions with excising or unraveling the impenetrable yarn-tangle of semantic misdirection.
An especially productive senior or team lead spends their time on refactoring and generally spinning their wheels with respect to product delivery, and then fails to deliver on time, or at all. Cue the rest of the team struggling to keep up with the refactors. The team's knowledge of the state of the product suffers, confusion about goals sets in, the senior/lead effectively becomes an anti-team player, throwing curveballs at the rest o
Here's a rundown of definitions in my .jprofile.ijs
, which get loaded in all J sessions.
Some of these are so simple they don't need names, but sometimes I just put things in here so I don't forget how to spell them.
Not all the functions are the most efficient, they're just there for playing with data. Often in a script, I will copy a function in, or re-write one that is more specific to the given problem domain.