haskell

vscodeでのhaskell開発環境作成

概要 macにて、vscodeでhaskell開発環境を作成したので手順を記載 ほぼVS Code と haskell-ide-engine で Haskell 開発環境を構築するのままだけど一部動かなかったところがあるのでメモ。 手順 stack brew install stack echo "export PATH=$PATH:~/.local/…

プログラミングhaskell 9章 version scala 〜後半(ライフゲーム)〜

type Board = List[Pos] val width: Int = 5 val height: Int = 5 def showcells(b: Board): IO[Unit] = seqn(b.map(p => writeat(p)("○"))) def isAlive(b: Board)(p: Pos): Boolean = b.contains(p) def isEmpty(b: Board)(p: Pos): Boolean = !isAlive(b)…

プログラミングhaskell 9章 version scala 〜後半〜

val box: List[String] = List( "+---------------+", "| |", "+---+---+---+---+", "| q | c | d | = |", "+---+---+---+---+", "| 1 | 2 | 3 | + |", "+---+---+---+---+", "| 4 | 5 | 6 | - |", "+---+---+---+---+", "| 7 | 8 | 9 | * |", "+---+---+---…

プログラミングhaskell 9章 version scala 〜前半〜

def getChar: IO[Char] = IO(System.in.read().toChar) def putChar(c: Char): IO[Unit] = IO(print(c)) def echo: IO[Unit] = for { c <- getChar _ <- putChar('\n') _ <- putChar(c) _ <- putChar('\n') } yield () def getLine: IO[List[Char]] = for { …

プログラミングhaskell 8章 version scala 〜後半〜

前半はこちら def token[T](p: Parser[T]): Parser[T] = for { _ <- space v <- p _ <- space } yield v def identifier: Parser[String] = token(ident) def natural: Parser[Int] = token(nat) def symbol(s: String): Parser[String] = token(string(s)) …

プログラミングhaskell 8章 version scala 〜前半〜

type Parser[T] = StateT[Option, String, T] def pure[T](x: T): Parser[T] = StateT.pure[Option, String, T](x) def failure: Parser[String] = StateT[Option, String, String](_ => None) def item: Parser[String] = StateT{ case "" => None case xs …