Competitive programming with Haskell Functional Festival 2025 in TOKYO
Competitive programming with Haskell Functional Festival 2025 in TOKYO
I’m happy to announce that the PDF of Haskell, The Craft of Functional Programming (3rd edition) is available to view and download for free. Later in the year I’ll revise it and make it available as an online text. But for now, here it is, uncorrected: https://simonjohnthompson.github.io/craft3e/craft3e.pdf
Real World HaskellA lot of people think day-to-day tasks like running a web app are difficult or impossible in Haskell! But of course this isn't true! In our Real World Haskell series, we'll take you through a whole slew of libraries that allow you to write a web backend. These libraries use Haskell's features to approach things like database queries and API building in unique ways. Part 1: Databa
「30分でわかる」のは、だいたい、 4. モナド(Monad)とは何か? の読了までを想定しています。 また速い人なら、30分で全部一気に読み通せる分量でもあると思います。 30分以上かかっても一気読みしてしまうことが推奨されますし、一気読みできるように、前に戻って知識の再確認をしなくて済むように、最大限留意して構成を設計した上で執筆されています。 数学と用語問題。モナドの理論的基盤として圏論があるのは事実。理論的基盤がしっかりしているのはプログラミングという数学的作業において歓迎すべきことではある一方で、他方そのため一般的なプログラマにとってはまず用語に馴染みがない。歴史的に、圏論ベースのモナドを理論から関数型プログラミングに応用されていく過程では、実際、先駆者の間でさえ紆余曲折があったのだが、学習者へは馴染みのない用語を伴って、いきなり高度な数学的概念全開で天下り的に提示されてしまうこ
I’ve been learning Rust for the past twenty days or so, working through the Blandy & Orendorff book, coding up things as I go. Once I got into playing with Rust traits and closures and associated types, the similarities to programming in Haskell with typeclasses, data structures, closure passing and associated types was pretty obvious. As a warm up I thought I’d try porting the stream fusion core
この記事は Haskell Advent Calendar 2016 の9日目の記事です。 とか云ってもう11日ですね、ホントすみません。 8日目は @phi16_ さん、10日目は @bra_cat_ket さん でした。 Haskell を書き始めてはや5年、Monad や Applicative は使いこなしているけど、それ以上の抽象化のレパートリーを増やせていないと感じていました。 何となく「型レベルプログラミング」という言葉に興味はありつつも、具体的に何を学べば型レベルプログラミングができるようになるのか分からずにいたのです。 そんなあるとき、コマンドラインパーザーのライブラリを探している中でこんな記事を見つけました。 qiita.com タイトルに「宣言的な型レベルコマンドラインパーザー」とあります。このライブラリが内部で何をしているのか追っていけば型レベルプログラミングってや
Haskellの例外処理事情 Haskellを使うたびに例外について調べ直す癖がついているので、諸々をまとめておく。 TL;DR 部分関数を使うな。 失敗可能性はMaybe?Either?IO? -> 迷ったらMonadThrowを使え。 予めエラー型を統一しないと例外処理クソだるいんだけど -> SomeExceptionを使え。 ライブラリどれ使えばいいの? -> safe-exceptionsを使え。 部分関数を使うな 死の化身。部分関数自体を避けるしか方法はない。用意された部分関数を使う場合は必ずラップすること。 パターンマッチの失敗やundefined, error等のピュアな文脈での例外は、IOモナドの中でのみキャッチすることができる。しかし、ピュアな文脈で解決できる問題を神モナドで解決するのはあまり嬉しくない。ピュアなものはピュアなものに、神のものは神に返すべきである。 もし
はじめに Haskellは静的純粋関数型プログラミング言語と言われるジャンルの言語であり、型や状態に厳しくWeb開発に向いていないと思われる方が多いと思います。 しかし 型の力によるクリーンアーキテクチャ 抽象化による高級な記述 圧倒的な型推論による軽量言語のような書き心地 意外と高いシングルスレッド性能 パフォーマンスも非常に高く, 書きやすい並行並列処理 上記のような利点があり、実はWeb開発に非常に有用な言語であると思っています。 HaskellでのWeb開発における標準的なインターフェースであるwai(web application interface)、そのインターフェースのアプリケーションを動作させる標準的なサーバーであるwarpという二つのライブラリを用いてボトムアップでWebアプリを作っていき、徐々に応用させていこうと思います。 waiとwarpはHaskellのWeb開発
Introduction About this tutorial So what's Haskell? What you need to dive in Starting Out Ready, set, go! Baby's first functions An intro to lists Texas ranges I'm a list comprehension Tuples Types and Typeclasses Believe the type Type variables Typeclasses 101 Syntax in Functions Pattern matching Guards, guards! Where!? Let it be Case expressions Recursion Hello recursion! Maximum awesome A few m
3月下旬からAtCoderのRatedコンテストに参加しています(AtCoderプロフィール)。この度、5月26日のABC128でようやく水色になりました(AtCoder社長の記事によると、これは上位15%に相当するらしいです)。 使用言語はHaskellです。コンテストの時間中に提出したコードは全てHaskellだったと思います。 この記事では、Haskellを使う理由や、Haskellで競技プログラミングをするコツ、AtCoderでHaskellを使う際のアレコレなどを書いていきます。「水色になるための方法」みたいな話はしません(できません)。 Haskellを使う理由 私のメイン言語はHaskellなので、競技プログラミングでもHaskellを使うのは自然な発想です。 ただ、Haskellは工夫すれば高速なコードを書けますが、あちこちに「遅くなる」罠があります。罠に怯えるくらいならH
Elm uses type inference to detect corner cases and give friendly hints. NoRedInk switched to Elm about four years ago, and 300k+ lines later, they still have not had to scramble to fix a confusing runtime exception in production. Learn more. -- TYPE MISMATCH ---------------------------- Main.elm The 1st argument to `drop` is not what I expect: 8| List.drop (String.toInt userInput) [1,2,3,4,5,6] ^^
これはElm Advent Calendar 2014の1日目です。 Elmはクライアントサイド向けの関数型言語です。一体どんな言語なのでしょうか? 1. HTML/CSS/JSにコンパイルされる ElmはHTML/CSS/JSにコンパイルして使用します。 この辺はJavaScriptにコンパイルされるAltJSに似ています。 AltJS同様、Elmも特別なランタイムライブラリは不要です。 ただし、Elmは1つのソースでHTML/CSS/JSをすべてまかなえるのが特徴です。 2. 独自の抽象化レイヤーを提供している 代表的なAltJSであるCoffeeScriptは"It's just JavaScript"をモットーにしています。すなわち、文法を改良するのみで、「中身」はJavaScript以上でも以下でもありません。 一方、Elmでは直接JSやCSSを操作することはできません。 基本的
あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずHaskellについて知っていることを書いた。 ← ここまで引用。 パッケージマネージャ Cabal 1.18を使おう。以上。 アプリケーションサーバ WSGIとかRackとかの流れでHaskellでもwebアプリのサーバインタフェースを統一化する動きがいくつかあった。その中で一番市民権を得たのはwaiと呼ばれるものだ。 ただ、残念なことにHaskell界でここ数年ずっと続いているI/Oストリーミングライブラリ戦争の決着がついていないため、統一化の状況は思わしくない。waiはconduitというライブラリに依存しているが、フレームワークによっては別のI/Oストリーミングライブラリを基盤にしている。 現状の3
This post evaluates the programming languages ATS, C#, Go, Haskell, OCaml, Python and Rust to try to decide which would be the best language in which to write 0install (which is currently implemented in Python). Hopefully it will also be interesting to anyone curious about these languages. I'm not an expert in these languages (except Python). My test-case is to read the tutorial for each language
はじめに¶ 巷に溢れているHaskell本はいきなりのIOを避けているものが多いですよね。こ れらの本を読んでわかった気になっても、実際に日々のタスクに使おうとした 場合に結構ハマることが多いんですよね。 「習うより慣れろ」みたいなスタイルでHaskellの学習をするとどういう学習曲 線をたどることになるんだろうか? phpのように動けばいいや(偏見?)というス タンスでHaskellのコードを書くことは可能なんだろうか? と疑問に思ったので、よくあるスクリプト言語の入門書(IOから入る系)のよう な話題を取り扱ってみようかなと。 Sphinxという良い感じに文章をかけるツー ルと、書いた文章をGitHub Pagesで手軽に公開できるような環境の存在も、こ の試みを後押ししました。というか書いていて楽しいので、みなさんもSphinx つかうとハッピーになれると思います。 フィードバックな
1 Haskell 2013.5.24 2 3 1988 B4 Sun 1992 4 Unix Magazine Unix Magazine UNIX RFC FYI (For Your Information) 5 IP PEM (Privacy Enhanced Mail) WIDE Project mh-e PEM 6 7 Unix Magazine PGP PGP 1 8 Mew (MIME) Mew Emacs Emacs XEmacs 9 Emacs Mew off Mew Emacs read-passwd gnu.org 10 IIJ KAME IIJ 11 KAME KAME WIDE BSD IPv6 IPsec Mobile IPv6 IIJ NEC BSD IPv6 IPsec Mobile IPv6 Mac IPv6 KAME 12 IETF Internet E
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く