Haskellとは? わかりやすく解説

Haskell

読み方ハスケル

Haskellとは、遅延評価など多く先進的な概念取り込んだ純粋な関数型プログラミング言語である。

Haskellの言語仕様1987年作られた。言語の名称は記号論理学者Haskell Brooks Curryの名にちなんでいる。プログラミング言語としては、現在産業用用いられているC++Java等の他の言語とはかなり異なった性格持っており、直接原型となったMiranda同様の関数型言語であるMLなどに近い部類属する。

Haskellの大きな特徴として、遅延評価挙げることができる。遅延評価とは、具体的な値が必要になった時点計算実行するというものである。また純粋な関数型言語であるため、副作用の無い関数合成が可能である。この点は、代入などの副作用を伴うC言語などの一般的なプログラミング言語とは異なっている。その他の顕著な特徴として、高階関数静的多相型付けパターン照合リスト内包表記豊富なデータ型リスト配列任意倍長整数など)の提供、などが挙げられる

Haskellは現在、主にソフトウェア研究の場で利用されている。これまでソフトウェアコンテストなどで、プログラミング言語としての高い能力証明してきた。典型的には、抽象度が要求される数学的な問題対すプログラミングにおいて高い生産性を持つとされる。また複雑で大規模になりがちなシステムを、その高い抽象能力によって簡潔に記述できる、とされている。しかし反面標準Haskellレベルでは、現実利用シーンで弱いケースもある。例えIO理については、IOモナドという機構により入出力機能補完必要になる


参照リンク
本物のプログラマはHaskellを使う - (日経BP ITpro
HaskellWiki - (英文
プログラミングのほかの用語一覧
プログラミング言語の種類:  Fortran  GLUT  Go  Haskell  フォートラン  Java  Kotlin

Haskell


Haskell

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/04/25 23:17 UTC 版)

カテゴリ / テンプレート


  1. ^ 出典URL: https://mail.haskell.org/pipermail/haskell/2009-November/021750.html, 閲覧日: 2023年1月11日, 題名: [Haskell] Announcing Haskell 2010, 出版日: 2009年11月24日
  2. ^ かつては Goffin と呼ばれていた。
  3. ^ a b c Preface”. Haskell 98 Language and Libraries: The Revised Report (2002年12月). 2009年6月23日閲覧。
  4. ^ The History of Haskell”. 2009年6月23日閲覧。
  5. ^ Simon Peyton Jones (編) (2002年12月). “Haskell 98 Language and Libraries: The Revised Report”. 2009年6月23日閲覧。
  6. ^ Future development of Haskell”. 2009年6月23日閲覧。
  7. ^ Welcome to Haskell'”. The Haskell' Wiki. 2009年6月23日閲覧。
  8. ^ : language-pragma-syntax-extension
  9. ^ 「変数」は実際にはその値を動的に変更することはできないなど、C言語など手続き型言語の変数とは明らかに異なるものである。
  10. ^ ここでは説明のため単に Float としているが、標準ライブラリで定義されている円周率 pi は浮動小数点数型の抽象的な型クラスである Floating a で定義されており、Float のみならず 倍精度浮動小数点数型 Double の値としても取得できる。
  11. ^ Haskell はカリー化によりすべての関数を 1 引数の関数として表現できるが、これにしたがって -> は右結合であるとして読むこともできる。上記の関数の型の定義は、括弧を明示した次の定義と同等である。
    gcd :: Int -> (Int -> Int)
    

    関数を引数にとる関数は、引数の型を括弧で囲んで -> 記号の優先順位を指定すればよい。次は関数を二つとり、その合成関数を返す演算子 . の定義である。

    (.) :: (b -> c) -> (a -> b) -> a -> c
    
  12. ^ 式の外で演算子の型を指定するときは、演算子を括弧で囲めばよい。以下の関数と演算子の相互変換を参照のこと。
  13. ^ これは、C++Java のような言語では次のようなコードに相当する。
    Hashtable<String,Int> hashtable;
    
  14. ^ 当然ながら、リストの要素としてリストを持つこともできる。例えば、文字リスト(文字列)のリストの型は [[Char]] となるであろう。
  15. ^ ユニットはC言語や Java などでいう void のような使われ方をする。
  16. ^ 言い換えれば、単純な型名に見えても何か複雑な別の型の別名である可能性がある。
  17. ^ 実際に標準ライブラリでは String[Char] の別名であり、String にはあらゆるリストの操作が可能である。
  18. ^ type values are built from type constructors. haskell2010
  19. ^ Char, Int, Integer, Float, Double and Bool are type constants with kind ∗. haskell2010
  20. ^ Maybe and IO are unary type constructors, and treated as types with kind ∗→∗. haskell2010
  21. ^ 除算する演算子 / は存在するが、これは Float などを除算する演算子であり整数ではない。他の言語のように自動的に値を変換する(int → float など)ような動作は Haskell では意図的に排除されている。
  22. ^ Haskell の型システムにおける汎用型が実体化されたもの。オブジェクト指向におけるインスタンスとは異なる。
  23. ^ ただし、型を明示することは可読性を向上したり問題の発見に役立つため、常に省略するのがよいとは限らない。
  24. ^ java.lang.Integer.parseIntjava.lang.Double.parseDouble など
  25. ^ : algebraic data type
  26. ^ データ型名とデータコンストラクタ名は同じでも構わない。このような単純な代数的データ型であれば型名とデータコンストラクタ名を同じにすることも多い。
  27. ^ : section
  28. ^ : type class
  29. ^ : action
  30. ^ GHC には System.IO.Unsafe モジュールに unsafePerformIO という関数があり、副作用を持ちながらアクションでない型を返すことができる。これは参照透過性に対するバックドアであり、Haskell の参照透過性を破壊する恐れがあるので、注意深く使わなければならない。
  31. ^ : corecursion
  32. ^ Haskellの神話 - あどけない話
  33. ^ attoparsec: Fast combinator parsing for bytestrings and text
  34. ^ trifecta: A modern parser combinator library with convenient diagnostics
  35. ^ Home — The Glasgow Haskell Compiler
  36. ^ : good for equational reasoning
  37. ^ http://www.cs.chalmers.se/~augustss/hbc/hbc.html (リンク切れ)
  38. ^ http://foswiki.cs.uu.nl/foswiki/Helium
  39. ^ Hugs 98
  40. ^ jhc
  41. ^ nhc98
  42. ^ Yhc - HaskellWiki



Haskell

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/29 20:16 UTC 版)

マージソート」の記事における「Haskell」の解説

(※ Haskellのリストは「長さを測って半分ずつに分ける」という操作には適さないため、要素を1個ずつ振り分ける関数使っている。この実装では安定ではない) mergesort :: Ord t => [t] -> [t]mergesort lst = case lst of [] -> lst [_] -> lst _ -> merge (mergesort a) (mergesort b) where (a, b) = split lst merge [] [] = [] merge xxs [] = xxs merge [] yys = yys merge xxs@(x : xs) yys@(y : ys) | x < y = x : (merge xs yys) | otherwise = y : (merge xxs ys) split [] = ([], []) split ~(x : xs) = (x : zs, ys) where (ys, zs) = split xs

※この「Haskell」の解説は、「マージソート」の解説の一部です。
「Haskell」を含む「マージソート」の記事については、「マージソート」の概要を参照ください。


Haskell

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/16 06:22 UTC 版)

パイプライン演算子」の記事における「Haskell」の解説

Haskellにおけるパイプライン演算子使用例である。Haskellでは&を使用するresult = 100 & function1 & function2

※この「Haskell」の解説は、「パイプライン演算子」の解説の一部です。
「Haskell」を含む「パイプライン演算子」の記事については、「パイプライン演算子」の概要を参照ください。

ウィキペディア小見出し辞書の「Haskell」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Haskell」の関連用語

Haskellのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Haskellのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2024 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリHaskellの記事を利用しております。
日外アソシエーツ株式会社日外アソシエーツ株式会社
Copyright (C) 1994- Nichigai Associates, Inc., All rights reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのHaskell (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのマージソート (改訂履歴)、パイプライン演算子 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS