Skip to content

Instantly share code, notes, and snippets.

#I __SOURCE_DIRECTORY__
#r "libs/NuGet.Core.dll"
#r "System.Xml.Linq"
open NuGet
open System
open System.IO
module NuGet =
@caiorss
caiorss / fuzzy.fsx
Created November 28, 2016 14:02 — forked from ruxo/fuzzy.fsx
Fuzzy logic
type CategoryFunc = float -> float
type Category = string * CategoryFunc
module private CategoryRandom =
let r = System.Random()
let from n = r.Next n
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
module Category =
@caiorss
caiorss / http.conduit.post.hs
Created November 20, 2016 03:57
http.conduit.post.hs
{-# LANGUAGE OverloadedStrings #-}
import Network.HTTP.Conduit
import qualified Data.ByteString.Lazy.Char8 as L
main :: IO ()
main = do
plainRequest <- parseUrl "http://httpbin.org/post"
let enrichedRequest = urlEncodedBody [("foo","bar"),("baz","qux")] plainRequest
response <- withManager $ httpLbs enrichedRequest
@caiorss
caiorss / proxy.hs
Created November 20, 2016 03:43 — forked from snoyberg/proxy.hs
Conduit proxy server
{-# LANGUAGE OverloadedStrings #-}
import Data.Conduit
import Data.Conduit.Network
import Data.Conduit.Text (encode, decode, utf8)
import qualified Data.Conduit.List as CL
import qualified Data.Conduit.Binary as CB
import Data.Text (toUpper)
import qualified Data.ByteString.Char8 as S8
@caiorss
caiorss / page_205_exercises.hs
Created November 8, 2016 16:50 — forked from roman/page_205_exercises.hs
Real World Haskell Exercises
module GlobRegex
(
globToRegex,
matchesGlob
)
where
import Text.Regex.Posix ((=~))
import Data.Char (toLower)
@caiorss
caiorss / porland.hs
Created November 8, 2016 16:49 — forked from MiyamonY/porland.hs
haskell monad porland
import Control.Monad
import Data.List
import Test.HUnit
readMaybe :: (Read a) => String -> Maybe a
readMaybe st = case reads st of [(x, "")] -> Just x
_ -> Nothing
foldingFunction :: [Double] -> String -> Maybe [Double]
foldingFunction (x:y:ys) "*" = return $ (y * x) : ys
module Main where
import qualified Data.ByteString.Char8 as B
import Data.Tree.NTree.TypeDefs
import Data.Maybe
import Text.XML.HXT.XPath
import Text.XML.HXT.Core
import Control.Monad
import Control.Monad.Trans
@caiorss
caiorss / shell.nix
Created November 2, 2016 08:48
Install Haskell Platform packages using Nix package manager
# Install Haskell platform libraries from:
#
# - https://www.haskell.org/platform/contents.html
#
{ nixpkgs ? import <nixpkgs> {}, compiler ? "ghc801" }:
let
inherit (nixpkgs) pkgs;
ghc = pkgs.haskell.packages.${compiler}.ghcWithPackages (ps: with ps; [
mtl random network HTTP HUnit HGL parsec template-haskell transformers async attoparsec cgi exceptions fixed GLURaw GLUT half hashable haskell-src html HTTP multipart network "network-uri" ObjectName old-locale old-time OpenGL OpenGLRaw parallel parsec primitive random regex-base regex-compat stm syb text xhtml zlib QuickCheck
]);
@caiorss
caiorss / echoServer.hs
Created October 29, 2016 21:35 — forked from marcmo/echoServer.hs
simple haskell program for sending over socket and receiving a response with a timeout
-- Echo server program
module Main where
import Control.Monad (unless,when)
import Network.Socket hiding (recv)
import qualified Data.ByteString as S
import Data.Word(Word8)
import Control.Concurrent(threadDelay)
import Data.List
import Numeric