Help us understand the problem. What is going on with this article?

Haskellことはじめ 型について

著書 Haskell ~教養としての関数型プログラミング~をテキストとして学んでいますがHaskellはガチで初学なので自分の解釈が異なっている場合があるかもしれません。

型を学ぶ

オブジェクト指向畑の住人からするとと言えばクラスを連想しますが、先入観をあまり持たずに進めていきます。

  • 型を調べる
# 文字Aの型を調べる
Prelude> :type 'A'
'A' :: Char

# 文字列TESTの型を調べる
Prelude> :type "TEST"
"TEST" :: [Char]

# 数値1の型を調べる
Prelude> :type 1
1 :: Num p => p
  • 型宣言
    構文:変数名::型 または 変数1, 変数2, 変数3 :: 型
    使用例
car :: String
price :: Integer
country, prefecture, city :: String
# カスタム演算子の型定義は括弧で囲む
(+*) :: Integer -> Integer -> Integer
  • 型セーフな関数定義
sample.hs
-- BMIを返す関数を定義

-- 型宣言
-- 身長と体重を引数にBMI値を返す
bmi :: Double -> Double -> Double
-- bmi = undefined
bmi = \h -> \w -> w / (h / 100) ^ 2

-- 身長、体重を引数に肥満かどうかを返す
isObese :: Double -> Double -> Bool
-- isObese = undefined
isObese = \h -> \w -> bmi h w >= 25

実行結果

*Main> bmi 172 60
20.281233098972418

*Main> bmi 172 59
19.94321254732288

*Main> bmi 172 70
23.661438615467823

*Main> bmi 172 80
27.041644131963228

*Main> isObese 172 70
False

*Main> isObese 172 80
True
  • モジュールの読み込み
    コンソールから
    構文:
    1つ目::module 名前空間.モジュール名
    2つ目以降::module + 名前空間.モジュール名

ソースファイルから

import 名前空間.モジュール名 (関数1, 関数2)
import qualified 名前空間.モジュール名 as エイリアス名

sample.hs
-- Maybe型の戻り値Just型またはNothing型から値を取り出す
import Data.Maybe (fromMaybe)

実行

# 第一引数はデフォルト値を指定
Prelude Data.Maybe> fromMaybe 0 (Just 8)
8
Prelude Data.Maybe> fromMaybe 0 Nothing
0

Data.Maybeリファレンス

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away