- J. Gibbons, “Origami programming.”, The Fun of Programming, Palgrave, 2003
- C. McBride & R. Paterson, “Applicative programming with effects”, Journal of Functional Programming, vol. 18, no. 01, pp. 1-13, 2008.
- [E. Meijer, “Functional Programming with Bananas , Lenses , Envelopes and Barbed Wire”, 1991.][3]
- [W. Swierstra, “Data types à la carte”, Journal of Functional Programming, vol. 18, no. 04, pp. 423–436, Mar. 2008.][4]
- [L. Augusteijn, “Sorting morphisms” pp. 1–23. 3rd International Summer School on Advanced Functional Programming, volume 1608 of LNCS, 1998.][5]
- [V. Vene, “Functional Programming with Apomorphisms (Corecursion)” pp. 147–161, 1998.][6]
- [T. Uustalu & V. Venu, “Primitive (Co)Recursion and Course-of-Value (Co)Iteration, Categorically” Informatica, Vol. 10, No. 1, 5–26, 1999.][7]
/* | |
* Copyright (C) 2008 Apple Inc. All Rights Reserved. | |
* | |
* Redistribution and use in source and binary forms, with or without | |
* modification, are permitted provided that the following conditions | |
* are met: | |
* 1. Redistributions of source code must retain the above copyright | |
* notice, this list of conditions and the following disclaimer. | |
* 2. Redistributions in binary form must reproduce the above copyright | |
* notice, this list of conditions and the following disclaimer in the |
{-# OPTIONS_GHC -fno-warn-orphans #-} | |
{-# LANGUAGE BangPatterns #-} | |
{-# LANGUAGE DeriveFunctor #-} | |
{-# LANGUAGE DeriveFoldable #-} | |
{-# LANGUAGE DeriveTraversable #-} | |
{-# LANGUAGE FlexibleContexts #-} | |
{-# LANGUAGE GeneralizedNewtypeDeriving #-} | |
{-# LANGUAGE NamedFieldPuns #-} | |
{-# LANGUAGE OverloadedStrings #-} | |
{-# LANGUAGE StandaloneDeriving #-} |
Pieces you need: | |
* emacs | |
* ghcid | |
ghcid needs to know the height of the terminal, we'll set it explicitly | |
height = (window-height) - (scroll-margin) - 1 | |
set this height as your term-buffer-maximum-size |
{-# LANGUAGE NoImplicitPrelude, GADTs, DataKinds, PolyKinds, FlexibleInstances #-} | |
import Data.Monoid | |
import Control.Category | |
-- A monoid gives a rise to a single-object category. | |
newtype M m (a :: ()) (b :: ()) = M m | |
instance Monoid m => Category (M m) where | |
id = M mempty |
-- a continuation of https://gist.github.com/gelisam/137effb33d2777328d366dcb563d8d13 | |
{-# LANGUAGE FlexibleContexts, FlexibleInstances, GeneralizedNewtypeDeriving, LambdaCase, MultiParamTypeClasses #-} | |
module EIO where | |
import Control.Monad | |
import Data.Void | |
import Test.DocTest | |
import qualified Control.Exception as E | |
This uses Linux kernel dyamic debug features
https://www.kernel.org/doc/html/latest/admin-guide/dynamic-debug-howto.html
This asumes that debugfs
is mounted under /sys/kernel/debug
echo 'module wireguard +p' | sudo tee /sys/kernel/debug/dynamic_debug/control
{-# LANGUAGE AllowAmbiguousTypes #-} | |
{-# LANGUAGE ConstraintKinds #-} | |
{-# LANGUAGE DeriveGeneric #-} | |
{-# LANGUAGE FlexibleContexts #-} | |
{-# LANGUAGE FlexibleInstances #-} | |
{-# LANGUAGE KindSignatures #-} | |
{-# LANGUAGE MultiParamTypeClasses #-} | |
{-# LANGUAGE PolyKinds #-} | |
{-# LANGUAGE ScopedTypeVariables #-} | |
{-# LANGUAGE TypeApplications #-} |
job "csi-linode-controllers" { | |
datacenters = ["dc1"] | |
type = "service" | |
group "controllers" { | |
count = 1 | |
# disable deployments | |
update { | |
max_parallel = 0 |
Whenever the topic of Bitcoin's energy usage comes up, there's always a flood of hastily-constructed comments by people claiming that their favourite cryptocurrency isn't like Bitcoin, that their favourite cryptocurrency is energy-efficient and scalable and whatnot.
They're wrong, and are quite possibly trying to scam you. Let's look at why.
There are plenty of intricate and complex articles trying to convince you that cryptocurrencies are the future. They usually heavily use jargon and vague terms, make vague promises, and generally give you a sense that there must be something there, but you always come away from them more confused than you were before.