プログラミング学習サイト

プログラミングの学習を開始される方を対象としたプログラミング入門サイトです。

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

Haskell 概要

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

HaskellWindowsMacの上に構築することも可能ですが、Dockerコンテナの上で実行することで完全な再現性が得られます。 加えてHaskell自体にもバージョンが存在するため、それらを容易に切り替えるとなおよいでしょう。

minegishirei.hatenablog.com

Haskell関数型プログラミング

Haskell関数型プログラミング言語に分類されますが、 関数型プログラミングは通常のプログラマーが持つ一般的な概念と比較して、ソフトウェアに対する全く異なるアプローチを提供します。

minegishirei.hatenablog.com

ghc ghci runghc

  • ghc : 早いネイティブコードを生成する最適化コンパイラghcで実行する際には、対象ソースをコンパイルした後、出来上がったバイナリファイルを実行する必要があります。
  • ghci : 対話型インタプリタデバッグやお試しなどで使います。
  • runghc : ghcと異なり、コンパイルの手順を踏まずにコードを実行する。2度手間ではないが、遅い。

minegishirei.hatenablog.com

Haskell 文法基礎

Haskellでの四則演算

minegishirei.hatenablog.com

Haskellの変数と型一覧

Haskell関数型プログラミングであるが故、手続き型プログラミングでよくみられる「変数を複数宣言してそれらを管理する」手法は一般的ではありません。

しかし、Haskell言語の中にも型と変数の仕組み自体は存在し、特に型の考え方は重要になります。 この記事ではHaskellの型について深く紹介します。

minegishirei.hatenablog.com

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

minegishirei.hatenablog.com

Haskellの条件分岐

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

minegishirei.hatenablog.com

Haskellは数学

Haskellの真骨頂は関数型プログラミングにあります。

関数型プログラミングについては以下の記事で解説していると思いますので、 今回はHaskellの関数の文法についてお話します。

minegishirei.hatenablog.com

Haskellの関数一覧

minegishirei.hatenablog.com

Haskell dataコマンドの使い方

Haskellのdata コマンドは既存の型を組み合わせて新しい型を作ることが出来ます。

minegishirei.hatenablog.com

Haskell classコマンドの使い方

minegishirei.hatenablog.com

Haskell IO型

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

ほとんどのプログラミングでは副作用は必要不可欠です。 Haskellの世界では純粋なコードの副作用から完全に分離されます。

minegishirei.hatenablog.com

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

Haskellにおいてのファイル読み込みはopenFile関数を使用します。 子の関数を使用するためには、System.IOを事前にimportしておく必要があります。

minegishirei.hatenablog.com

Haskellモナドの説明

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

minegishirei.hatenablog.com

page:https://minegishirei.hatenablog.com/entry/2023/11/25/093811