Skip to content

Instantly share code, notes, and snippets.

View HirotoShioi's full-sized avatar
🎯
Focusing

Hiroto Shioi HirotoShioi

🎯
Focusing
View GitHub Profile
@HirotoShioi
HirotoShioi / file0.txt
Last active September 16, 2018 10:57
すごいH本で見落としがちだが実は重要な機能:newtype ref: https://qiita.com/HirotoShioi/items/70cd235e93dee99bf8e8
-- | ユーザー(図書館利用者)
data User = User
{ uId :: !Integer
, uName :: !Text
} deriving (Eq, Show)
-- | 本
data Book = Book
{ bId :: !Integer
, bAuthor :: !Text
{-# LANGUAGE EmptyCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Reddit where
import Control.Monad (forM_, join)
import Data.Maybe (isJust)
import Data.Semigroup ((<>))
import Data.String (fromString)
@HirotoShioi
HirotoShioi / file0.txt
Last active August 29, 2018 02:27
[小ネタ] Haskellでモンティ・ホール問題を解いてみよう ref: https://qiita.com/HirotoShioi/items/b64198dd346d178b73fb
module Lib
( montyHall
, runMontyHall
) where
import Control.Monad (replicateM)
import Data.Semigroup ((<>))
import System.Random (randomRIO)
-- | Given an list, picks an element
@HirotoShioi
HirotoShioi / example.hs
Created July 11, 2018 05:14
Example of an decompressing and analyzing the zip file using zip libray (http://hackage.haskell.org/package/zip)
module Main where
import Codec.Archive.Zip
import Control.Monad (forM_)
import qualified Data.ByteString as BS
import qualified Data.Map.Strict as M
import Data.Text (Text)
import Data.Text.Encoding (decodeUtf8With)
import Data.Text.Encoding.Error (ignore)
import qualified Data.Text.IO as T
module CLI
( CLI(..)
, getCliArgs
) where
import Data.Semigroup ((<>))
import Options.Applicative (Parser, argument, auto, command, execParser, fullDesc, header,
help, helper, info, infoOption, long, metavar, progDesc,
strOption, subparser, (<**>))
import Paths_log_classifier (version)
@HirotoShioi
HirotoShioi / subcommand.hs
Created May 8, 2018 07:11
optparse implementation using subparser
module Main where
import Data.Semigroup ((<>))
import Options.Applicative
import Paths_opt_parse (version)
data CLI
= CollectEmails
| ProcessTicket Int
@HirotoShioi
HirotoShioi / file0.txt
Last active April 23, 2018 12:30
モナド変換子 (その3: 課題の解答) ref: https://qiita.com/HirotoShioi/items/6faaf8babb23bb2f3485
newtype App a = App (StateT UTXOs (ExcepT String Identity) a)
deriving (Functor,
, Applicative,
, Monad,
, MonadState UTXOs
, MonadError String)
@HirotoShioi
HirotoShioi / file0.txt
Last active November 7, 2019 00:32
モナド変換子(その1: 基本) ref: https://qiita.com/HirotoShioi/items/8a6107434337b30ce457
someFun :: Env -> IO ()
...
someHandling :: Env -> Int -> IO Int
...
@HirotoShioi
HirotoShioi / MonadTInterpreter
Created April 6, 2018 00:52
MonadTransformers.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE TypeApplications #-}
module Interpreter where
import Control.Monad.Except
import Control.Monad.State
import Data.Map
import qualified Data.Map as M
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE RecordWildCards #-}
module Main where
import GHC.Generics