Haskell
対象者 ゴール 目次 筆者 職歴 対象者 プログラミング入門本を読み終わった学生 キャリアの方向性に迷いが出てしまったエンジニア ゴール このサイトの目標は、プログラミングに入門したての新米エンジニアに対して、プログラミング学習の「目的」と…
単純な四則演算 Haskellでもほかの言語同様、四則演算をサポートしています。ghciと入力して対話型Haskellインタプリタを起動し、以下のコードを入力してみましょう。 ghci> 3+2 -- 5が出力される ghci> 3-2 -- 1が出力される ghci> 3*3 -- 9が出力される gh…
Haskellのコンパイラ HaskellのメインのコンパイラはGHCと呼ばれます GHCは(Glasgow Haskell Compiler)の略です。 名前の由来 : Glasgowは大学の名前で、グラスゴー大学で作られたことに由来しています。 言語 : コンパイラ自体もHaskellで書かれているが、…
モナドのメリット モナドはHaskellのプログラムにおいて、特に入出力回りで活躍する仕組みです。 関数プログラムの本体から副作用を安全に分離することができ、計算戦略をプログラム全体にばら撒くことをせずに、一箇所にまとめることができます。 モナドの…
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 コマンドは既存の型を組み合わせて新しい型を作ることが出来ます。 data Animal = Cat Int scream :: Animal -> String scream (Cat number ) = concat (replicate number "ニャー") main = print $ scream(Cat 2) 上記…
変数宣言letの具体例 Haskellにおいて変数を宣言する方法は、letを使用する方法があります。 main = do let name = "田中太郎" print(name) ちなみに、一つのletの中で複数の変数を宣言するには{}を使用します。 main = do let {name = "田中太郎"; id = 100…
Haskellにおける条件式 Haskellにおいて、条件文という言葉よりも「条件式」といったほうが適切かもしれません。 条件文という言葉は手続き型言語やオブジェクト指向型言語では使われますが、Haskellにおいては「関数」が第一級オブジェクトとして扱われます…
ファイル読み込み ReadModeによるファイル読み込み Haskellにおいてのファイル読み込みはopenFile関数を使用します。 子の関数を使用するためには、System.IOを事前にimportしておく必要があります。 以下のサンプルコードでは、input.txtファイルを読み取り…
ほとんどのプログラミングでは副作用は必要不可欠です。 Haskellの世界では純粋なコードの副作用から完全に分離されます。 Haskellの関数に副作用がある場合、IOのマークが付与されます。 標準入力と標準出力 Haskellにおける標準入力はgetLine関数を使用し…
listを扱うHaskellの関数 lines関数 このlines関数は、Haskellのデフォルトの関数として定義されています。 その役割は文字列を\nで区切られた配列に変換します。 lines関数の型を確認してみると、String型から[String]型に変更する関数であると確認できると…
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は関数型プログラミング言語に分類されますが、 関数型プログラミングは通常のプログラマーが持つ一般的な概念と比較して、ソフトウェアに対す…
Dockerを使用したHaskellの環境構築手順について HaskellはWindowsやMacの上に構築することも可能ですが、Dockerコンテナの上で実行することで完全な再現性が得られます。 加えてHaskell自体にもバージョンが存在するため、それらを容易に切り替えるとなおよ…