サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
qiita.com/Izawa_
今回はデータ型を定義するnewtypeとdataの違いについて説明していきます。主に違いを探っていくのでdataやnewtypeの詳しいオプションなどは説明していません。この記事で使用しているGHCのバージョンは8.8.3です。
lotzさんのData.Foldableの正体に迫るに触発されてこの記事を書きました。 Haskellで、リストなどへの畳み込み操作(ステップごとに結果を累積する計算)を一般化したものがFoldableクラスです。今回はそんなFoldableがどこからHaskellにやってきたのか、について焦点を絞りました。 lotzさんの記事にによると「Crushと呼ばれるものが原型になっているようです」とのことで、論文をいざ読んでみたのですが、記号の意味を理解するのが精いっぱいでした… そこで、この記事では概念というよりは「GHCとFoldableの関係」についてまとめました。 畳み込みとは? 前提知識として、畳み込みとFoldable型クラスについてある程度知っている必要があるので、軽く紹介します。 畳み込みの単純な例として、1~100までの総和を求める問題があります。数式ではこうです。 $$ \s
Haskellを書く上で、避けては通れない概念がいくつかあります。Functor(ファンクタ)もその1つですが、特徴的なものなので、理解しにくい人もいると思います。今回はできるだけコード例と図を示しながら解説していきます。後半ではFunctorを扱うライブラリのData.Functorについて見ていきます。 注意 ・数学の圏論には詳しくないです。そのため、関手(数学のFunctor)についての話はできません。 ・この記事で使用しているGHCのバージョンは8.8.3です。 最初のFunctor はっきり言うと、Functorは型クラスです。GHC.Baseで定義されていて、Preludeにも含まれています。定義はこうです。 class Functor (f :: * -> *) where fmap :: (a -> b) -> f a -> f b (<$) :: a -> f b ->
qiita.com
はじめまして、Haskellをもっと多くの人に楽しんでもらいたいと思って書きました。読んでいただく前に、いくつか注意があります。 筆者はHaskellのベテランではないので、もし誤りがあればご指摘してくださると幸いです。 質問などあれば、答えられる範囲で答えます。 この記事が書かれた環境はGHC v8.6.5です。 テーマ Haskellのifは文ではないです 同様にletも文ではないですletは式にも文にもなれる(@mod_poppoさん、ご指摘ありがとうございます。) 場合分けを書きたくなった際の他の手段 ifは何者? Haskellでは、全ての式は値を持ちます。CやPythonなどの言語ではifは文として扱われます。
posted articles:Haskell:100%Functor:22%ghci:11%データ構造:11%GADTs:11%
HaskellのEitherモナドとそれに関連するData.Eitherの関数についてまとめました。この記事で使われているGHCのバージョンは8.8.3です。 Eitherとは Eitherとは、Haskellに標準で入っているモナド・型の1つです。GHCiで定義を見てみましょう。
HaskellコンパイラのGHCに付属する対話形式のコンパイラ、GHCiの基本的な使い方です。さらに詳しいドキュメントは、Haskell.jp1、公式ドキュメントを参照してください。この記事を書くにあたって使ったGHCのバージョンは8.6.5です。 起動 GHCiにパスが通っていれば、ghciとコマンドラインに叩くだけで起動できます。 λ> ghci GHCi, version 8.6.5: http://www.haskell.org/ghc/ :? for help Prelude>
Haskell の Data.List 関数まとめ Haskell の標準ライブラリの Data.List のページにある関数(117 個)がかなり便利だったのでまとめてみました。 注意点 この記事はとても長いです。 自分もまだまだ Haskell を書くのは上手ではないので、誤りなどあれば教えていただければ幸いです。 この記事を書くのに使用した環境は以下の通りです。 GHC: v8.6.5 GHCi: v8.6.5 ここに載っている関数は以下の操作で使うことができます。 ソースファイル: import Data.List GHCi: :module +Data.List ただし、以下の関数はPreludeに含まれているのでインポートする必要はありません。 (++), head, tail, last, init, null, length, map, reverse, foldl, fo
このページを最初にブックマークしてみませんか?
『@Izawa_のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く