- https://twitter.com/kamyshev_code/status/1370270186440425476
- https://eat.kamyshev.me/?utm_campaign=itunderhood
module StateLangSpec where | |
import Test.Hspec | |
import Data.IORef | |
import Control.Monad.Free.Church | |
data StateMethod s next | |
= Put s (() -> next) | |
| Get (s -> next) |
-- Option 1: State as an eDSL | |
data StateMethod s next | |
= Put s (() -> next) | |
| Get (s -> next) | |
instance Functor (StateMethod s) where | |
fmap f (Put st next) = Put st (f . next) | |
fmap f (Get next) = Get (f . next) |
# This is an idea of how to merge the State monad and the Church Free monad | |
# without interferring with the inner eDSL. | |
# This code is incomplete and requires a further development. | |
# The idea is that we pass the state around with the Church Free functions | |
# as we would do it with a regular State monad. | |
# The overal concept is based on my Free monadic STM implementation: | |
# https://github.com/graninas/cpp_stm_free |
# This is a sample of how to implement the State monad with Church Free monad. | |
# This sample is incomplete, but its concept is taken from my Free-monad based STM library. | |
# Consider the library to implement the rest of the code. The idea is the same. | |
# https://github.com/graninas/cpp_stm_free | |
#include <functional> | |
#include <variant> | |
#include <any> |
{-# LANGUAGE AllowAmbiguousTypes #-} | |
module Test2 where | |
import Control.Monad.Free | |
import Control.Monad | |
data BreadType = Baguette | Toast | |
deriving (Show, Eq, Ord) |
// https://www.tutorialspoint.com/online_processingjs_editor.php | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/processing.js/1.6.6/processing.min.js"></script> | |
<script type="application/processing" data-processing-target="pjs"> | |
dW = 4; dH = 20; dWH = dW/2; dHH = dH/2; | |
gSh = dWH/2; r = dW/sqrt(2); fs = 2 * (dH); |
https://www.youtube.com/watch?v=fhMVCRWpNVc&ab_channel=%D0%90%D0%B9%D0%A2%D0%B8%D0%91%D0%BE%D1%80%D0%BE%D0%B4%D0%B0 | |
igroykt | |
айтишечка и в африке айтишечка | |
а я питоняш, и пишу на нем код наш | |
иногда на пхп, выдаю я выхлоп кнеш |
--ghc 8.0.2 | |
type ThermometerName = String | |
type BarometerName = String | |
data Method | |
= ReadThermometer ThermometerName | |
| ReadBarometer BarometerName | |
| ReportTemperature | |
| ReportAtmospherePressure |
Recently I noticed the number of the same two questions being asked again and again on different Haskell resources. The questions were “How to get a Haskell job” and “Why is it so hard to find Haskellers?” Although these two are coming from the opposite sides of the hiring process, the answer is really just one. There is a single reason, a single core problem that causes difficulties of hiring and being hired in the Haskell community, and we should clearly articulate this problem if we want to increase the Haskell adoption.
We all know that there are many people wishing to get a Haskell job. And a visible increase of Haskell jobs looks like there should be a high demand for Haskellers. The Haskell community has also grown like crazy past years. But still, why is it so difficult to hire and to be hired? Why can’t companies just hire any single person who demonstrates a deep knowledge of Haskell in blog posts, in chats, on forums, and in talks? And why do Haskell companies avoid hirin