(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
# delete local tag '12345' | |
git tag -d 12345 | |
# delete remote tag '12345' (eg, GitHub version too) | |
git push origin :refs/tags/12345 | |
# alternative approach | |
git push --delete origin tagName | |
git tag -d tagName |
-- | This JSON package retains the order of array elements. | |
-- JSON: http://www.ietf.org/rfc/rfc4627.txt | |
module JSON ( | |
JSON(..) | |
, parseJSON | |
) where | |
import Control.Applicative ((<*),(*>),(<$>),(<$)) | |
import Control.Monad (void) |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
This is a quick tutorial explaining how to get a static website hosted on Heroku.
Why do this?
Heroku hosts apps on the internet, not static websites. To get it to run your static portfolio, personal blog, etc., you need to trick Heroku into thinking your website is a PHP app. This 6-step tutorial will teach you how.
An expression beginning with a left arrow (<-
) inside a do
block statement is desugared to a monadic binding. This is syntactically a superset of existing Haskell, including extensions. It admits a clean notation that subsumes existing patterns and comes with few downsides.
do
f (<- x) (<- y)
-- ===
So the basic thing you need to start working with org-mode is to install org-mode. Emacs > 24.??? already have it bundled and if you're not going to use some cool features like org-drill and stuff, that should be enough.
Basically, org-mode operates with org files. Create one (work.org
for example). Org files' markup is simple -- there are headers
with info. Header format is '*'{1..} TODO-kw Description
. To
create entry just write it. Also C-c RET
does something similar
(I never use it tho). So, stars are indentation -- more indented
curl
to get the JSON response for the latest releasegrep
to find the line containing file URLcut
and tr
to extract the URLwget
to download itcurl -s https://api.github.com/repos/jgm/pandoc/releases/latest \
| grep "browser_download_url.*deb" \
| cut -d : -f 2,3 \
| tr -d \" \
This page has been moved to http://www.vacationlabs.com/haskell-bounty-program
Here's the general idea:
1.) Download a Nerd Font
2.) Unzip and copy to ~/.fonts
3.) Run the command fc-cache -fv
to manually rebuild the font cache
An "invertible syntax description" is something that can be used to both parse and generate a syntax.
For example, instead of defining separate toJson
and fromJson
functions for a given data type, an invertible syntax description could be used to provide both.
There are many Haskell libraries that provide this functionality or something close to it.
As far as I can tell most of them are at least inspired by Invertible syntax descriptions by Tillmann Rendel and Klaus Ostermann.
Personally I am interested in using these for HTTP routing.
I frequently want to be able to define a route such as /episodes/:id.json
, dispatch based on that route, and generate links to that route.
Doing so manually is tedious and error prone.