Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Haskell Introduction

mina
July 14, 2018

Haskell Introduction

プログラミング言語のHaskellの紹介スライドです。

JOI2017夏季セミナーで作った資料な気がします。

mina

July 14, 2018
Tweet

More Decks by mina

Other Decks in Technology

Transcript

  1. Haskell Introduction
    mina @silmin_

    View full-size slide

  2. はじめに
    「純粋関数型データ構造」という本で純粋関数型(ryを学んだ
    ()
    これは
    ➢ 参照透過性
    ➢ 永続性
    ➢ 副作用のNASA
    ➢ なんでも関数
    ➢ 簡潔かつ混沌()
    などが特徴(らしい)
    今回はHaskellで実装した

    View full-size slide

  3. Haskell とは
    芸術

    View full-size slide

  4. 型宣言
    Haskellは美しい
    data Color = Red | Blue | Yellow
    toJpn :: Color -> String
    toJpn Red = “aka”
    toJpn Blue = “ao”
    toJpn Yellow = “ki”
    main = print $ toJpn Red
    パターンマッチ
    関数実行 & 出力
    enum Color
    {
    Red,
    Blue,
    Yellow
    };

    View full-size slide

  5. 関数のいろいろ
    関数名 引数1 引数2.......で呼び出し
    temp a b -> a `temp` b とも書ける
    ( 1 + ) , ( 5 * ) : 一引数関数
    ( 1 + ) . ( 5 * ) : 関数合成 ( 5倍して1足す関数)
    f x y = print $ gcd x y
    f x = print . gcd x
    f = (print .) . gcd

    View full-size slide

  6. 実行してみる
    関数合成

    View full-size slide

  7. 二分探索木(木の定義)
    data Tree a = Leaf | Node (Tree a) a (Tree a)
    Leaf - 末端ノードの先にいる
       実質虚無

     Node - ただのノード
    子を持ってる
    a
    ...
    ...
    葉 葉

    View full-size slide

  8. 二分探索木(search関数)
    search::Ord a => Tree a -> a -> Bool
    search Leaf b = False
    search (Node tl a tr) b =
    if b < a then search tl b
    else if b > a then search tr b
    else True
    型宣言
    パターンマッチ

    View full-size slide

  9. 最後に
    興味を持った方は「Haskell Platform」で検索 
    ※UNIX / Mac の方はパッケージがあるのでinstallしましょう
    Haskellには光と闇が存在します

    View full-size slide

  10. Haskell とは
    芸術

    View full-size slide

  11. Thank you for listening !!!

    View full-size slide