Haskell

10xプログラマー養成所

スキル一覧 Architect Agile Docker SQL Haskell Vim 筆者 みねぎしれい 和光市在住の26歳エンジニアです。 インフラが得意です。 職歴 Cardio Flow Design(2年:アルバイト) 心臓の血流解析を行う企業。2年ほどデスクトップアプリ(C#)の改修、テストを…

Haskellでの四則演算【Haskell, 四則演算, Bool】

単純な四則演算 Haskellでもほかの言語同様、四則演算をサポートしています。ghciと入力して対話型Haskellインタプリタを起動し、以下のコードを入力してみましょう。 ghci> 3+2 -- 5が出力される ghci> 3-2 -- 1が出力される ghci> 3*3 -- 9が出力される gh…

Haskellによるプログラム実行方法3パターン【Haskell, ghc, ghci, runghc, Helloworld!】

Haskellのコンパイラ HaskellのメインのコンパイラはGHCと呼ばれます GHCは(Glasgow Haskell Compiler)の略です。 名前の由来 : Glasgowは大学の名前で、グラスゴー大学で作られたことに由来しています。 言語 : コンパイラ自体もHaskellで書かれているが、…

Haskell ">>="による副作用管理【Haskell モナド モナド則】

モナドのメリット モナドはHaskellのプログラムにおいて、特に入出力回りで活躍する仕組みです。 関数プログラムの本体から副作用を安全に分離することができ、計算戦略をプログラム全体にばら撒くことをせずに、一箇所にまとめることができます。 モナドの…

Haskellのclassによる型制約【Haskell class data】

classキーワード 型クラスの定義 Haskellでは等号、非等号を表すためにEqというクラスを使用しています。 class Eq a where (==), (/=) :: a -> a -> Bool x == y = not (x /= y) x /= y = not (x == y) 上記のEqクラスから以下の情報が読み取れます。 等号…

Haskell dataで型を作成する【Haskell data 型作成】

Haskellのdataについて Haskellのdata コマンドは既存の型を組み合わせて新しい型を作ることが出来ます。 data Animal = Cat Int scream :: Animal -> String scream (Cat number ) = concat (replicate number "ニャー") main = print $ scream(Cat 2) 上記…

Haskellのlet whereの使い方【Haskell let where 変数宣言 局所的変数】H

変数宣言letの具体例 Haskellにおいて変数を宣言する方法は、letを使用する方法があります。 main = do let name = "田中太郎" print(name) ちなみに、一つのletの中で複数の変数を宣言するには{}を使用します。 main = do let {name = "田中太郎"; id = 100…

Haskellにおける条件式【Haskell, if, case, switch】

Haskellにおける条件式 Haskellにおいて、条件文という言葉よりも「条件式」といったほうが適切かもしれません。 条件文という言葉は手続き型言語やオブジェクト指向型言語では使われますが、Haskellにおいては「関数」が第一級オブジェクトとして扱われます…

Haskellでファイルを読み書きする方法【Haskell入門】

ファイル読み込み ReadModeによるファイル読み込み Haskellにおいてのファイル読み込みはopenFile関数を使用します。 子の関数を使用するためには、System.IOを事前にimportしておく必要があります。 以下のサンプルコードでは、input.txtファイルを読み取り…

Haskellにおける標準入力と標準出力

ほとんどのプログラミングでは副作用は必要不可欠です。 Haskellの世界では純粋なコードの副作用から完全に分離されます。 Haskellの関数に副作用がある場合、IOのマークが付与されます。 標準入力と標準出力 Haskellにおける標準入力はgetLine関数を使用し…

Haskellの関数一覧

listを扱うHaskellの関数 lines関数 このlines関数は、Haskellのデフォルトの関数として定義されています。 その役割は文字列を\nで区切られた配列に変換します。 lines関数の型を確認してみると、String型から[String]型に変更する関数であると確認できると…

Haskell入門 【関数型プログラミング】

Haskell 概要 Dockerを使用したHaskellの環境構築手順 Haskell, Docker, docker-compose Haskellは関数型プログラミング ghc ghci runghc Haskell 文法基礎 Haskellでの四則演算 Haskellの変数と型一覧 Haskellのlet whereの使い方 Haskell let where 変数宣…

Haskellは数学【Haskell, 関数型プログラミング】

Haskellの真骨頂は関数型プログラミングにあります。 関数型プログラミングについては以下の記事で解説していると思いますので、 今回はHaskellの関数の文法についてお話します。 Haskellの関数の文法 Haskellの関数の構文は非常にシンプルです。 -- 関数の…

Haskellの変数と型一覧【Haskell, 関数型プログラミング】

Haskellは関数型プログラミングであるが故、手続き型プログラミングでよくみられる「変数を複数宣言してそれらを管理する」手法は一般的ではありません。 しかし、Haskell言語の中にも型と変数の仕組み自体は存在し、特に型の考え方は重要になります。 この…

関数型プログラミングとは何か?【Haskell, 写像, 関数, 副作用】

Haskell はおそらく、これまでに使用したどの言語ともかなり異なります。 Haskellは関数型プログラミング Haskellは関数型プログラミング言語に分類されますが、 関数型プログラミングは通常のプログラマーが持つ一般的な概念と比較して、ソフトウェアに対す…

Dockerを使用したHaskellの環境構築手順【Haskell, Docker, docker-compose】

Dockerを使用したHaskellの環境構築手順について HaskellはWindowsやMacの上に構築することも可能ですが、Dockerコンテナの上で実行することで完全な再現性が得られます。 加えてHaskell自体にもバージョンが存在するため、それらを容易に切り替えるとなおよ…