Object-Oriented Conference 2024で発表した資料です。 https://fortee.jp/oocon-2024/proposal/b31c9818-3cb8-4350-adfe-cbc839cdf829 ビジネスの専門知識(ドメイン)を中心に据えたドメイン駆動設計に…
モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基本的
これは「Haskell Advent Calendar 2023」13日目の記事です。 日頃、私は趣味としてAIをHaskellで実装することに没頭しています。しかし、今回は少し違ったアプローチを試してみようと思います。逆に、AIにHaskellを使って自ら実装させ、その過程や成果を共有してみたいと考えています。この新たな取り組みがどのような結果を生むのか、一緒に探ってみましょう。 AI搭載エディタ「Cursor」 気を取り直して、今回は最近話題のAI搭載エディタ Cursor を使って実際に動くHaskellのアプリを0から作らせてみたいと思います!Cursorをまだ知らない人は以下の記事がオススメです(僕もまだこれしか読んでません🤫) Cursorのダウンロードとインストール、そしてアカウント登録が完了したらさっそくHaskellを書かせてみたいと思います。 それではレッツ・・・ ゴ
この記事は 一休.comのカレンダー | Advent Calendar 2023 - Qiita 10日目の記事です。 昨今は Web アプリケーション開発の世界でも、関数型プログラミングのエッセンスを取り入れるような機会が増えてきました。 とはいえ、一つのアプリケーションを 1 から 10 までがっちり関数型プログラミングで構成するというわけではなく、そのように書くこともあればそうでない従来からの手続き的スタイルで書くところもあるというのが現状で、どこまで関数型プログラミング的な手法を取り入れるかその塩梅もまちまちだと思います。まだ今はその過渡期という印象も受けます。 本稿ではこの辺りを少々考察してみたいと思います。 先日、Qiita Conference 2023 Autumn で以下のテーマで発表を行いました。 この発表では「関数型プログラミング最強!」という話をしたわけではなく、
先日リリースされたGHC 9.2.1で、64ビットArm(AArch64)向けのネイティブコード生成器(Native Code Generator; NCG)が実装された。これを機会にGHCのバックエンドについて簡単にまとめてみる。 概略 GHCでHaskellプログラムをコンパイルすると、いくつかの中間言語を経て最終的には機械語が出力される。 この工程の最後の部分を「バックエンド」と呼ぶ。 GHCには Native Code Generator (-fasm)LLVM backend (-fllvm)unregisterised via-C backend の3種類のバックエンドが存在する。このほか、バイトコードインタープリターと-fno-codeもデータ型的にはバックエンドの一種として扱われている。(参照:compiler/GHC/Driver/Backend.hs) Native C
Skip to the content. Haskell入門 従来の言語では問題を部分化する方法について概念的な限界がいくつかある。関数型言語はこれらの限界を押し広げるも のである。 なぜ関数プログラミングは重要か 関数プログラミングを習得するには,これまで命令プログラミングで培った技術はいったん忘れ,真っ白な気持ちで臨む必要があります。関数型の山を登るためには,命令型の山を降りなければなりません。 第1章 関数プログラミングは難しくない! Haskellは理解すれば理解するほどきれいに書けることを約束してくれます。信頼してください 常にパターンを探しましょう。単純になるとき、またその時だけそれらを抽象化するのです 辛抱強く抽象化を正しく理解しましょう。もしそれが出来たならすべてのことが魔法のようにつじつまが合うようになるでしょう。 実装そのものが設計図となります … Haskell Ma
はじめに Haskellは静的純粋関数型プログラミング言語と言われるジャンルの言語であり、型や状態に厳しくWeb開発に向いていないと思われる方が多いと思います。 しかし 型の力によるクリーンアーキテクチャ 抽象化による高級な記述 圧倒的な型推論による軽量言語のような書き心地 意外と高いシングルスレッド性能 パフォーマンスも非常に高く, 書きやすい並行並列処理 上記のような利点があり、実はWeb開発に非常に有用な言語であると思っています。 HaskellでのWeb開発における標準的なインターフェースであるwai(web application interface)、そのインターフェースのアプリケーションを動作させる標準的なサーバーであるwarpという二つのライブラリを用いてボトムアップでWebアプリを作っていき、徐々に応用させていこうと思います。 waiとwarpはHaskellのWeb開発
この記事はElm Advent Calendar 2019最終日の記事です。 去年末あたりから現職のチームでElmを書き始めたので、大体1年程度はプロダクションでElmのコードを書き続けたことになる。学生時代はRubyとJavaScriptばっかりだったので、関数型プログラミングとかそういうバックグラウンドは一切なかった。その観点から、改めて率直な感想を申し上げておく。 なお、弊社フロントエンドチームとElmに関するはなしは、私の書いたFringe81アドベントカレンダーの記事を参照のこと。 fringeneer.hatenablog.com Elmには中毒性がある Elmを触ったことのない方からすると「?」になるかもしれない(というか、昔の自分がそうだった)が、率直に言ってElmには中毒性がある。一度Elmを知ると、Elm以外の言語を触るたびに「これ、Elmだったら〇〇なのにな〜」と思う
信頼性はない 都市伝説かもしれん 大体枕詞に特別な理由がなければがつく 思いついたら徐々に更新する それは違うよってことがあったら @Lugendre まで ghc 8.6.5の話(8.8.1は仕事で使ってなくてな......) コンパイル通るかの確認だけなら最適化オプションO0でコンパイルする stackでいうとstack build --fast 動かすときはO2ビルドしたほうがいいが,インライン展開に5億年消費する なんならこのくらいは静的解析に任せてもいいが,でかいプロジェクトだと一定時間動いてハングアップするのしか世の中にないのでオワリ VSCode のせい説もある ghcideに期待 haskell-language-serverがすべてを解決した CIするときは必ずキャッシュする 毎回一から依存関係やGHCのビルドが走って余裕で1時間超えるようになるので データ構造のフィール
Haskellらしさって?「型」と「関数」の基本を解説!【第二言語としてのHaskell】 第二言語としてHaskellを学ぶ道案内。開発環境の準備から、Haskellらしいプログラミングの考え方まで、Haskell-jpのigrepさんが丁寧に解説します。 こんにちは。Haskell-jpの山本悠滋です。 この記事では、すでにプログラミング経験のある方向けに、第二言語としてHaskellを学ぶ道案内をしていきます。 環境の準備や、自明なサンプルプログラムの紹介にとどまらず、Haskellらしいプログラミングの考え方も伝えていく予定です。 Haskellについて Haskellというと、「関数型」というキーワードが思い浮かぶ方も多いと思います。 確かにHaskellは、すべての関数がカリー化されており、それらを組み合わせてプログラムを書いていく関数プログラミングがしやすい言語です。 しかし
2020年に「すごいHaskellたのしく学ぼう」を { -# OPTIONS -Wall -Werror #- } を付けて読むHaskell はじめに 現在、書籍「すごいHaskellたのしく学ぼう」(第1版第4刷)を読んでHaskellを勉強しています。 Haskell入門の良書として有名なようなのですが2012年発行で多少情報が古くなっているので、今からこの書籍を読もうという方はこちらの記事などを参考にすると良いと思います。 2017年に「すごいHaskellたのしく学ぼう」を読む この書籍の p. 37 の訳注で、{-# OPTIONS -Wall -Werror #-} という記述を .hsファイル(Haskellのコードを記述するファイル)の先頭行に付け、通常より厳密な警告を有効にすることが提案されています。こうすると:l hogehoge(ファイル名)で.hsファイルをコン
初心者が入門書を読んでさぁ書くぞとなったときにつまずくところのうちの一つが,同じようなライブラリが多すぎ問題である. ということでそういうライブラリの話をしよう. 例によって例のごとく間違っていること書いてあるかもなので報告よろしく. モナド変換子 Haskellで実用的なプログラムを書く上で避けて通れないものの一つにモナド変換子がある.こいつはなにかというと,簡単に言えば,モナドを合成してでかいモナドを作るやつである.人間がおおよそ使うであろうモナド変換子はライブラリで提供しているので,それらを組み合わせてお望みのモナドを作ろうとするわけだが,そこに立ちはだかるのがtransformersとmtlである. transformersとmtl transformersはlift という下位のモナドのアクションをでかいモナドのアクションに持ち上げてくれるメソッドが定義されたMonadTrans
Competitive Programming Advent Calendar 2015 五日目の記事です。 www.adventar.org Beginner Contest レベルなら、呪文みたいな大量のコード (レギュラーコンテストに出てる人たちのコードはすごい) を書かないでも、意外とシンプルに書けることが多くて、パズル感覚で楽しめます。 Haskell で ABC をやる上で僕が感じた楽しいところ、楽しくないところをご紹介します。 楽しいところ 1. 関数が豊富 abc029.contest.atcoder.jp import Control.Monad main = do n <- readLn putStr . unlines . replicateM n $ "abc" 重複ありの組み合わせは replicateM 関数で作れるので、このようにびっくりするほど短く解けます。
咳が止まらない状態で非常に厳しいですが、来ていますので、自分用のメモを残しておきます。 関数型(function type)を見つめるプログラミング / 山下さん 関数の型、 Haskell では第一級 リスト型 a が型なら [a] も型 タプル a b が型なら (a, b) も型 タプル a b が型なら a -> b も型 a が domain 、 b が codomain 高階関数型 domain が関数 (a -> b) -> c codomain が関数 a -> (b -> c) こちらは意識されにくい 2変数関数 (a, b) -> c Haskell 以外でもよく使う セクション (+) は高階関数 a が domain、 b が codomain 逆に、 codomain が関数の高階関数は 2 項演算子 f: a -> a -> a `f` curry :: ((a
ようこそHaskell-jp wikiへ! このサイトについて(現在は編集できない状態で公開しています!) このWikiはHaskell関連情報を日本語でまとめるためのポータルサイトです。 2022年11月までgititというWikiエンジン(もちろんHaskell製)で運用されておりましたが、ホスティングサービスとして利用していたHerokuの無料プランが廃止されたことや、長期間編集される見込みがないことから、現在は静的サイトとして読み込み専用で公開しています。編集用のページや編集履歴にアクセスしても404 Not Foundが返ってきます。そのほか、多くのページはURLが変わってしまっている点にご注意ください。編集履歴を閲覧したい場合はGitリポジトリーにおける履歴からご覧ください。編集したい場合は今後はhaskell-shoenの利用をご検討ください。 コンテンツ メーリングリスト
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く