サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
GPT-4o
haskell.jp
日程の詳細はスケジュールをご覧ください。 発表者募集 発表者募集は締め切りました。 Haskell Day 2021 は YouTube プレミア公開を利用してオンラインで開催されます。発表をご希望の方は下記の要項をご確認の上、奮ってご応募ください。 応募資格 誰でも発表者として応募できます。 発表内容 Haskell に関する内容及び Haskell コミュニティが関心のありそうな内容であれば自由です。 参考(過去2回の発表タイトル): Haskell Day 2019 関数型(function type)を見つめるプログラミング HKD (Higher Kinded Datatype) 「しんさんきぼう」GHC の deriving テクノロジー Haskell メタプログラミングによる Egison のパターンマッチの実装 関数と型で理解する自動微分 GHCJS による Web フロ
Tweet 🎅この記事は、Haskell Advent Calendar 2020 25日目の記事です。 🎄Happy Christmas!!🎄 今回は先日(といっても元の質問の投稿からもう何ヶ月も経ってしまいましたが…)StackOverflowに上がったこちら👇の質問に対する回答の、続きっぽい話を書こうと思います。長いし、質問の回答からスコープが大きく外れてしまうので記事にしました。 haskell - モナド則を崩してしまう例が知りたい - スタック・オーバーフロー MonadとMonoidにある重要な繋がりを説明した後、それを応用したWriter MonadがどうMonoidを使ってMonad則を満たしているのか証明します。そして、Writerのそうした性質を用いて簡単にMonad則を破る例を紹介することで、読者のみなさんがMonad則のみならずdo記法やMonadそのもの
Tweet Haskellは他の多くのプログラミング言語と異なった特徴を備えており、しばしばそれらが議論を呼ぶことがあります。その中でも特によく俎上に上がるのが、遅延評価です。遅延評価は、適切に扱えば不要な計算を行わず、計算資源を節約してくれるステキな仕組みですが、一歩使い方を間違うと「サンク」という「これから実行する(かも知れない)計算」を表すオブジェクトが無駄に作られてしまい、却ってメモリー消費量が増えてしまう、などといった問題を抱えています。この現象は「スペースリーク」と呼ばれ、かつて専門のAdvent Calendarが作られたことがあるほど、Haskeller達の関心を集めてきました。 そんなHaskeller達の悩みの種を軽減しようと、GHC 8.0以降、StrictとStrictDataという言語拡張が搭載されました。これらの拡張は、大雑把に言うと、 StrictData:
Link to hereはじめに この記事では、Haskellを業務でカジュアルに使う観点やヒントについて、簡単に紹介します。 Haskellを業務で使える局面は、以下のようにいくつか考えられます。 「プロダクト」の開発用言語として、Haskellを使う 「作業」の支援・加速用に、Haskellを使う 「思考」の支援・加速用に、Haskellを使う つまり、プロダクトの開発用言語としてHaskellを用いない業務形態においても、上記2や3のケースとして、Haskellを使用できます。すなわち、Haskellは幅広い局面でカジュアルに、つまり気軽に手軽に使用できます。 本記事では、特に、上記の2と3について、いくつかの観点やヒントや例を紹介します。 なお、上記は、Haskellを用いる場合には限りません。Python, Perl, Ruby, Rust, Scala, OCaml, Cloj
純粋関数型プログラミングで副作用を扱う方法Posted by Mizunashi Mana on April 05, 2020 Haskell は他のプログラミング言語には見られない特徴を多く持っている。その中の1つが純粋性だ。Haskell は純粋関数型プログラミング言語であることを、売りの1つにしている。しかし、純粋性は多くの場合表現力の縮小を招く。ところが Haskell は、IOモナドの導入により、通常のプログラミング言語と変わらぬ表現力を持てるようになっている。これは、とても驚くべきことだ。しかし、同時にこれは Haskell 入門者にとって、大きな混乱を招いているようだ。 今回は、そもそも純粋性とはなんなのか、なぜ他の言語は純粋性を担保できないのか、そして Haskell はどうやって IO モナドにより純粋性を担保しつつ他の言語と変わらない表現力を持てるようにしているのかにつ
RegexFestaで発表した内容を詳しく紹介しますPosted by YAMAMOTO Yuji(@igrep) on December 30, 2019Tags: 正規表現 先日、といっても2019年10月18日のことなんでもう2ヶ月以上も経ってしまいましたが、私はRegex Festaというイベントで、「regex-applicative」というパッケージの紹介を致しました。 今回はその際使用したスライドを、ブログ記事として詳しく共有させていただきたいと思います! 発表時のスライドと比べて、よりHaskellを知っている人向けになってしまいますが、regex-applicativeの魅力を明確に伝えるために必要なのでご了承ください。 Applicativeスタイルを前提知識とします。 Link to hereはじめにまとめ regex-applicativeは、Haskellの式で正
すると、日本語の大半が変な文字列に変わってしまいました😥。 へ… 変な文字列じゃないし!エスケープシーケンスに変換しただけだから! これは、Haskell標準におけるshow関数の残念な仕様です。 show関数に文字列を渡すと、ダブルクォートで囲った上で、ASCII範囲外の文字列や、ASCIIの非表示文字などをエスケープシーケンスに変換して返します。 これは、show関数をデバッグで使用した際、指定した文字列にどんな文字が含まれているか、簡単にわかるようにするための仕様です。 文字の文字コードを表示すれば、NULL文字や制御文字、ゼロ幅文字、特殊なスペースなど、視認しにくいおかしな文字が含まれていても、一目でわかるのです。 しかしこれは日本語話者である我々にとって、少なくとも日本語の文字に関しては「余計なお世話」です。 NULL文字やASCIIの制御文字といった本来画面に表示することがな
前回から引き続き、Haskell Implementors’ Workshop 2019への参加レポートとして、私の印象に残った発表を紹介します。 今回は、Copilotという、C言語のコードを生成するHaskell製内部DSLについての発表です。 Link to hereCopilot 3.0: a Haskell runtime verification framework for UAVs 発表者: Frank Dedden Royal Netherlands Aerospace Center, Alwyn Goodloe NASA Langley Research Center, Ivan Perez NIA / NASA Formal Methods Haskell製の内部DSLからC言語のソースコードを生成する、Copilotの紹介です。 似た謳い文句の内部DSLとしてivor
前回から引き続き、Haskell Implementors’ Workshop 2019への参加レポートとして、私の印象に残った発表を紹介します。 今回は、Gibbonという、GHC以外のHaskell(の、サブセット)の処理系についての発表です。 Link to hereThe Gibbon Compiler: Accelerating a small subset of Haskell 発表者: Ryan R. Newton Indiana University, Michael Vollmer Indiana University, USA, Chaitanya Koparkar Indiana University Gibbonは最適化の手法を研究するために作られたコンパイラーです。 具体的には、我々(特にHaskeller)がよく使う、木構造全体に対する処理の最適化です。 こうし
前回から引き続き、Haskell Implementors’ Workshop 2019への参加レポートとして、私の印象に残った発表をいくつか紹介します。 今回は、「GHC 8.10に導入されるであろう機能」です。 いずれも該当するMerge Requestはmasterブランチにマージ済みなので、おそらくGHC 8.10で提供されるでしょう。 Link to hereHoleFitPlugins and the future of interactive development in GHC 発表者: Matthías Páll Gissurarson Chalmers University of Technology, Sweden 該当のMerge Request: !153 該当のGHC Proposal: なし 昨年のHaskell Symposiumでも発表されてGHC 8.6
こんにちは。 今回からいくつか、「Haskell Implementors’ Workshop 2019」に私が先月参加した際のレポートとして、印象深い発表をテーマごとに分けた短い記事を執筆します。 最近公開されたGHC 8.8の話はもちろん、未来のGHCやその他のHaskellの処理系を知るのによいイベントでしたので、その一部だけでも伝われば幸いです。 Link to hereそもそもHaskell Implementors’ Workshop (HIW)とは? シリーズ(?)第1回目なので、簡単にHIWそのものについて紹介しておきましょう。 HIWは、ICFP (International Conference on Functional Programming)という関数型プログラミングについての国際会議に併設された、Haskellの実装者のためのワークショップです。 名前の通り、G
タイトルの通り、fallibleというパッケージを紹介します。 matsubara0507/fallible: interface for fallible data type like Maybe and Either. - GitHub ちなみに、fallibleはHaskell-jp Slackで: と質問したところ、該当するようなパッケージは無さそうだったので作ったという経緯があります。 その際に助言をくれた fumieval氏のコードをほとんど引用した形になったので、Haskell-jp Blogに紹介記事を載せることにしました(僕は普段、自分のブログに自作したパッケージを書いています)。 import qualified Data.List as L run :: String -> Token -> Bool -> IO () run targetName token ver
先日、Emscripten & WebAssembly night !! #7というイベントにて、AsteriusというHaskellをWebAssemblyにコンパイルするツールについて紹介いたしました。 資料はこちら👇です。 AsteriusでHaskellの関数をJSから呼べるようにしてみた(けど失敗) 本日は、スライドの英語で書いていた箇所を和訳しつつ、いろいろ捕捉してブログ記事の形で共有します。 Link to here🔍Asteriusとは何か 冒頭でも触れたとおり、AsteriusはHaskellのソースをWebAssemblyにコンパイルするコンパイラーです。 GHCのHEAD(開発中のバージョン)を都度フォークして、現在活発に開発中です。 Template Haskellと、GHC標準におけるIOを行う関数(の大半)を除いた、すべての機能が利用できるようになっています
多くの言語では, here document (heredoc) という言語機能が搭載されています.これは,複数行の文字列をコード中に文字列リテラルとして埋め込める機能です.今日は heredoc ほど使い勝手がよくないものの,長い文字列を埋め込める, Haskell 標準の string gap という機能を紹介したいと思います.
Posted by Yuji Yamamoto(@igrep) on January 17, 2019Tags: Windows, TidalCycles Link to here背景 先日teratailのHaskellタグを眺めていたところ、下記のような質問がありました。 Haskell - networkパッケージがうまく機能しない|teratail TidalCyclesという、Haskell製の内部DSLでシンセサイザーの演奏ができるライブラリーのインストールがうまくいかない、という質問です。 networkパッケージがインストールできていない、ということなのでcabal hellにでもハマったのかな、と思ったのですが、類似しているとおぼしき報告(と、こちら)を読む限り、どうもGHCのインストール自体に何か問題があるように見えました。 もう当の質問者はHaskell Platfo
Link to hereこの記事は この記事はHaskell Advent Calendar その2兼プリキュアAdvent Calendar 20185日目の記事です。 毎度同時投稿で失礼します。 今年は私用で忙しかったので、のんびり書いてできあがったら空いてる日に投稿する、という楽なスタイルで書かせていただきました。なのでタイムスリップして5日目の記事と言うことにします(それにしてもずいぶん時間かかってしまってすみません、もうクリスマスも過ぎたし…😥)。 今回も例年の私のAdvent Calendarどおり、タイプセーフプリキュア!に、最近追加しようとした機能と、その際使用したもろもろの要素技術についての記事です。 タイプセーフプリキュア!そのものについては今年9月の記事や、そこで言及しているもっと古い記事をご覧ください。 Link to here課題: プリキュアに変身していない状
こんにちはkakkun61こと岡本和樹です。 去る11月10日にHaskell Day 2018が開催されましたので、そのイベントレポートをお送りします。 Link to hereHaskell Day 2018とは https://haskell-jp.connpass.com/event/92617/ Haskell Dayは2012年2016年と不定期に開催しており今回で3度目となります。 2018年の今回は「Haskellちょっと興味あるからちょっとできるまで」というテーマで開催されました。 Link to hereセッション Link to here「作りながら学ぶHaskell入門」を使ったハンズオン 開発中の対話的チュートリアル「作りながら学ぶHaskell入門」を使って、参加者の皆さんにもくもくと入門していただきました。「作りながら学ぶHaskell入門」では、簡単な課題を
n番煎じのよく使うGHC拡張の紹介Posted by mizunashi_mana on May 15, 2018Tags: GHC, Language Extensions Haskell1では各処理系で言語拡張を提供し,LANGUAGEプラグマというものを利用することで,言語拡張を利用することが許容されています.Haskellのデファクト標準的な処理系GHCも多くの言語拡張を提供しており,その拡張はGHC拡張と呼ばれています. 今回は,このGHC拡張の簡単な紹介と,個人的に良く使う拡張についての簡単な紹介を,全3回に分けて行いたいと思います.対象としては,GHCでHaskellプログラミングをしたことがあり,通常のHaskellの構文や動作方法が分かっている人を考えています.また,この記事はあくまで簡単な紹介に留めるもので,付随する留意点や詳細な機能説明は,大事な箇所は漏らさないよう注
ghc-proposals, Trac ticket, Phabricator, ...Posted by takenbu.hs on February 11, 2018 Link to hereはじめに Haskellのコンパイラの1つであるGHCは、オープンソースソフトウェア(OSS)のプロジェクトとして今も活発に開発が進められています。 個人の経験や経歴や肩書きや権限などに関わらず、誰でもGHCの開発にすぐに参加することができます。 ここでは、GHCに新しい変更を提案し実装するための、以下の手順例を紹介します。 変更提案 (GitHubのghc-proposals リポジトリ上にて実施) パッチ送付 (PhabricatorのHaskell.org インスタンス上にて実施) GHCに改善したい点があれば、誰でも変更提案が可能です。 提案のハードルは案外高いものではありません。GHC開
HashMap・HashSetの利用時は注意!Posted by Yuji Yamamoto(@igrep) on January 21, 2018Tags: Security あらゆるソフトウェアに脆弱性は存在し得ます。 Haskellは高度な型システムを駆使することで、脆弱性を根本的に回避したプログラムを作ることを可能にします(脆弱性を防ぐためだけのものではないですが、興味のある人はSafe Haskellについても調べてみるといいでしょう)。 しかし、だからといって、型を設計する段階で脆弱性を回避できるよう気をつけなければいけないことには変わりませんし、GHCが生成した実行ファイル、使用するライブラリーに絶対に脆弱性がないとは言えません。 現状、Haskellはほかの著名なプログラミング言語ほど使用されていないためか、あまり脆弱性が報告されることはありません(libcなど、ほかの言語
この記事は、Haskell (その4) Advent Calendar 201714日目の記事です。 枠が空いていたので埋めるために登録しました。 長くかかった割には実験自体は失敗気味な、昨日のこちらの記事よりは有用な情報じゃないかと思います。 ほかの言語でもありそうな話ですしね。 すごく簡潔にまとめるとこの間の下記のツイートに収まるのですが、もう少し丁寧に補足するために書きます。 学んだことをまとめると - Invalid characterと言われたらchcp 65001しよう - Permission Deniedと言われたらビルドし直そう - 日本語のパスが混ざらないよう気をつけよう - Cのライブラリーはものによる ですか。多分 #haskell 以外でも有益な話。 — Yuji Yamamoto: 山本悠滋 (@igrep) 2017年12月5日 Link to hereInv
種の仕組みとそれに付随する言語拡張についてPosted by mizunashi-mana on September 18, 2017 Haskellには種(kind)という仕組みがあります。大雑把に言ってしまえば、「型の型」を実現する仕組みです。この仕組みについて、あまり情報が出回っていないようなので、解説記事を残しておこうと思います。なお、前編と後編に分かれていて、この記事は後編になります。前編はこちらになります。 この記事は、Ladder of Functional Programming (日本語訳)の FIRE LUBLINE(ADVANCED BEGINNER) を対象に、Part 1の続きとして、種に付随するGHC言語拡張やパッケージを紹介するものです。 なお、特に断らない限り、対象としてGHC8系を設定しています。stackを使ってる方はresolverをLTS Haske
対話操作による出力、コンパイル時出力、実行時出力Posted by takenbu.hs on September 10, 2017 Link to hereはじめに Haskell用コンパイラであるGHCは、驚くほど多彩な情報出力機能を標準で搭載しています。 出力できる情報は非常に沢山ありますが、ここでは、以下のいくつかの方法について簡単にまとめて紹介します。 ghciでの対話操作による情報の出力方法 コンパイル時における情報の出力方法 実行オブジェクトの実行時における情報の出力方法 なお、本記事では、stackコマンド経由ではなく、素のGHCを使う場合について説明しています。 stackコマンドを使用する場合は、ghcコマンドではなく、stack ghc --コマンドの様に読み替えてください。 また、本記事の実行例は、GHC8.2.1とLinux(ubuntu 16.04 LTS)環境
種の仕組みとそれに付随する言語拡張についてPosted by mizunashi-mana on August 23, 2017 Haskellには種(kind)という仕組みがあります。大雑把に言ってしまえば、「型の型」を実現する仕組みです。この仕組みについて、あまり情報が出回っていないようなので、解説記事を残しておこうと思います。 この記事は、Ladder of Functional Programming (日本語訳)のFIRE LUBLINE(ADVANCED BEGINNER)を対象に、種の仕組みとそれに付随するGHC言語拡張やパッケージを紹介するものです。 なお、特に断らない限り、対象としてGHC8系を設定しています。stackを使ってる方はresolverをLTS Haskell 8以降に設定しておくことを推奨します。
Link to hereはじめに Haskell用コンパイラであるGHCのユーザーズガイド(マニュアル)の在り処について紹介します。 また、GHCのユーザーズガイドはボリュームが多いため、頻繁に調べる項目を見つけやすいように、いくつかの章や節の在り処を簡単に紹介します。 Link to hereユーザーズガイドの在り処 GHCの最新版のユーザーズガイド(英語版)は以下にあります。 Glasgow Haskell Compiler User's Guide: Web版 Glasgow Haskell Compiler User's Guide: PDF版 なお、素晴らしい日本語翻訳版が以下にあります。 GHC 8.0 (nobsunさん訳; 翻訳中) GHC 7.8 (kothaさん訳) Link to hereユーザーズガイド内で、よく調べる項目の在り処 GHCのユーザーズガイドはボリュー
コンパイル実行、スクリプト的実行、対話的実行、ワンライナー的実行Posted by takenbu.hs on August 13, 2017 Link to hereはじめに Haskell用コンパイラであるGHCには、以下のように4種類の実行方法があります。 コンパイル実行 : ghc スクリプト的実行 : runghc (or runhaskell) 対話的実行 : ghci ワンライナー的実行 : ghc -e 以下、それぞれについて簡単に紹介します。 なお、本記事では、stack経由ではなく、素のGHCを使う場合について説明しています。 Link to hereコンパイル実行 Haskellのソースファイルから、実行ファイルを生成(コンパイル)する方法です。生成された実行ファイルは、ユーザーが明示的に起動することにより実行されます。 例えばソースファイルが以下の場合に、 $ ca
コンパイル時間に制限されないデプロイ方法Posted by Kadzuya Okamoto on April 30, 2017Tags: Localize, Heroku これまで、HaskellのコードをHerokuで実行しようとすると、コンパイルがHerokuの制約時間内に終わらず、面倒なハックが必要でつらい状態でした。 でも、HerokuがDockerをサポートするようになった今なら、Haskell製のウェブアプリケーションをHeroku上で公開するのはずっと簡単です。 この記事では、Servant(HaskellのWebフレームワークの1つ)で作ったアプリケーションを、Dockerの力を借りてHerokuにデプロイする方法について、具体的なプログラムを使って順を追って説明していきます。 Link to here本記事について この記事は、Releasing a Haskell We
はじめまして。Haskell-jpこと日本Haskellユーザーグループです! この度、日本におけるHaskellの普及を目指して、ユーザーグループを立ち上げることといたしました。 詳しいことは「日本Haskellユーザーグループについて」をご覧いただくとして、立ち上げにともない、3点発表です! Link to hereその1 公式Slackチームの開放 Haskell-jp立ち上げ前、有志による議論に使用していたSlackチームを開放します! 下記から登録してください! https://haskell.jp/signin-slack.html 現時点の運用ルールは、以下のとおりです。 #questionsや#beginnersではHaskellに関する質問を募集します! 質問に対する回答は、スレッド機能を使って回答しましょう。複数の質問を同時に投稿しやすくするための配慮です。 その他、「
このページを最初にブックマークしてみませんか?
『日本Haskellユーザーグループ - Haskell-jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く