Skip to content

Instantly share code, notes, and snippets.

Avatar

Adil Akhter adilakhter

View GitHub Profile
View haskeller_competency_matrix.md
View haskell_getting_started.md
@adilakhter
adilakhter / Json.scala
Created Dec 28, 2017 — forked from pchiusano/Json.scala
Simple JSON parser combinator library that does not use zippers
View Json.scala
// WARNING! totally untested, I have only compiled the code! :)
package json
import collection.immutable.Map
import scalaz.{\/, MonadPlus}
import scalaz.\/._
import scalaz.std.vector._
import scalaz.std.map._
import scalaz.std.list._
View Source.scala
package test
import scala.collection.mutable
import scala.reflect.ClassTag
/**
* A Source of elements of type [[A]].
*
* [[Source]] is basically the inverse of
* a `scala.Iterator`: instead of the core functionality being the pull-based
View haskell_stack_and_intellij_idea_ide_setup_tutorial_how_to_get_started.md

#Haskell, Stack and Intellij IDEA IDE setup tutorial how to get started Upon completion you will have a sane, productive Haskell environment adhering to best practices.

Basics

  • Haskell is a programming language.
  • Stack is tool for Haskell projects. (similar tools for other languages include Maven, Gradle, npm, RubyGems etc)
  • Intellij IDEA IDE is a popular IDE.

Download and extract Stack

Don't install Haskell, Stack, Cabal or any other Haskell tool or library using your OS package manager or using Cabal.

@adilakhter
adilakhter / must-watch-talks.md
Created Oct 8, 2016 — forked from ikhoon/must-watch-talks.md
Must watch talks - reddit /r/scala
View must-watch-talks.md
View freemusic.scala
#!/usr/bin/env amm
load.ivy("org.typelevel" %% "cats" % "0.7.0")
@
import cats.{Id, ~>}
import cats.data.State
import cats.free._
import cats.free.Free._
View Advanced-FP-with-Scala.md

Advanced Functional Programming with Scala - Notes

Copyright © 2017 Fantasyland Institute of Learning. All rights reserved.

1. Mastering Functions

A function is a mapping from one set, called a domain, to another set, called the codomain. A function associates every element in the domain with exactly one element in the codomain. In Scala, both domain and codomain are types.

val square : Int => Int = x => x * x
@adilakhter
adilakhter / runar-io-free.scala
Created Sep 10, 2016 — forked from arosien/runar-io-free.scala
Translation of Runar's ScalaIO 2013 presentation on IO and Free monads (http://blog.higher-order.com/assets/scalaio.pdf) to scalaz.
View runar-io-free.scala
import scalaz._
import Scalaz._
import Free._
/** "Pure" interactions with a console. */
sealed trait Console[+A]
case class GetLine[A](k: String => A) extends Console[A]
case class PutLine[A](s: String, a: A) extends Console[A]
object Console {
@adilakhter
adilakhter / FreeConsole.scala
Created Sep 9, 2016 — forked from filippovitale/FreeConsole
FreeConsole – Simplest end to end example of Coyoneda and Free Monad in Scala
View FreeConsole.scala
import scalaz.effect.IO
import scalaz.std.function._
import scalaz.{Coyoneda, Free, Monad, State, ~>}
object NonFunctor extends App {
// my simple algebra
sealed trait Console[A]
case class PrintLine(msg: String) extends Console[Unit]
case object ReadLine extends Console[String]
You can’t perform that action at this time.