These are Haskell translations of Ninety-Nine Lisp Problems, which are themselves translations of Ninety-Nine Prolog Problems. If you want to work on one of these, put your name in the block so we know someone's working on it. Then, change n in your block to the appropriate problem number, and fill in the <Problem description>,<example in Haskell>,<solution in haskell> and <description of implemen
1. Make a function named 'myLast' that finds the last element of a list. -- Welcome to 99 Haskell! Solve H-99[0] problems live in the browser to -- strengthen your understanding of the language. Help out on GitHub[1]. -- [0] https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems -- [1] https://github.com/bramgg/99haskell myLast :: [a] -> a
先にまとめ Haskellに超入門した Haskell、結構思考にマッチしやすくていいなー でもアクションとか入ってくると、必ずしもそうばっかりじゃなさそう、というかそっちが本気モードっぽい 説明があいまいさを残さないように話しててよかった 結構なペースだったけどこのくらいの勢いでやるほうが気合入っていいな 続きもやりたかったけど来週は予定が合わなくてぐぬぬ。。。自習しよう>< Haskel超入門 この会の趣旨 明日の機械語入門の中で必要なHaskellの文法を学ぶのが元々の主旨 Halkellの難しい内容をやるわけではない ラムダ・モナドは出さない なれることが目的 Haskelで最低限必要な文法 重要なキーワードは「再帰」 Hello World module Main whereはなくても動く Main.hsのファイル名とmoduleの名前は一緒じゃないとダメ。 main =の部分は
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
Haskellではモナドと呼ばれる部品を組み合わせてプログラムを作ります。今までアクションとして取り扱っていたのはIOモナドというモナドの一種です。IOモナドの仕組みを調べることで、IOモナドを組み合わせることの具体的なイメージを説明します。モナドについての一般論へ進む前の準備を目的としているため、IO以外のモナドや圏論には言及しません。 シリーズの記事です。 Haskell 超入門 Haskell 代数的データ型 超入門 Haskell アクション 超入門 Haskell ラムダ 超入門 Haskell アクションとラムダ 超入門 Haskell IOモナド 超入門 ← この記事 Haskell リストモナド 超入門 Haskell Maybeモナド 超入門 Haskell 状態系モナド 超入門 Haskell モナド変換子 超入門 Haskell 例外処理 超入門 Haskell 構文
モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基本的
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? モナドを勉強しようとするとモナド則が立ちはだかります。しかしモナド則は意味だけでなく、それがモナドを勉強する上でどういう位置付けなのかも分かりにくいです。とりあえず棚上げしたまま分かる範囲のことから手を付けていましたが、ちょっと分かったような気がしたのでメモしておきます。 モナド則に関する現時点の理解ですが、正確さは保証できません。 これを読めばモナドが理解できるという類の説明(モナドチュートリアル)ではありません。 試験的にモナド則を図示しました。コードを図に転写して、多少の解釈を加えたものです。もし分かりにくければ無視しても構いませ
連載目次 第0回: 概要 (この記事) 第1回: Gameモナドの基本 先ほど、free-gameというライブラリをアップロードしました。free-gameは、世界で一番柔軟かつ簡単にゲームなどのGUIを作れるライブラリを目指しています。 Freeモナドとは Freeモナドは、Functorを与えると自動的にモナドを生成してくれる構造で、これを使うことで、アクションをデータの一つとして柔軟に扱えるようになります。去年の10月ごろからにわかに日本のHaskeller間で流行り始めた、今一番熱いモナドです[要出典]。Freeモナドそのものに関してはこれらの記事を読みましょう。 Haskell for all: Why free monads matter そろそろFreeモナドに関して一言いっとくか 型クラスとモナドと Free モナド - あどけない話 Freeモナドって何なのさっ!? -
John Hughes, Institutionen för Datavetenskap, Chalmers Tekniska Högskola, 41296 Göteborg, SWEDEN. rjmh@cs.chalmers.se この日本語訳は原著者の承諾を得て山下がここに公開するものです。 この訳文についての、御指摘などは山下伸夫(nobsun .at. sampou.org)までおねがい いたします。 翻訳最終更新日 : 2011-09-17 原文 "Why Functional Programming Matters" 日本語訳PostScript この論文は1984年以来何年ものあいだChalmers大学のメモとして回覧された。 1989年と1990年に幾分か改訂をしたのが[Hug89]と [Hug90]である。この版はもとのChalmer大学のメモ のnroff原稿をもとに
はじめに:モナドが何かわからないけど分かりたい人へ この記事はあなたの為に書かれたものです! 「モナドって難しいそうだしよく分からない、けどきっと賢い人たちが『モナドとは何か』について素敵な説明を与えてくれるはず!」 …そういう期待を持っているまさにあなたのその勘違いを是正するためにこの記事はあります。 「モナドが何か」を理解するのはまずは諦めて下さい。 この記事は、世界一わかりやすいモナドの記事 - みょんさんの。を理解したいと思わない人のために、プログラミングの文脈でモナドに関する少しの考え方を提供するものだと考えて下さい*1。 what it is から how it works へ モナドはモノではありません。だから「何」という質問に答えるのは難しいでしょう。数学的な公理を読者に投げつけることも意味不明な喩えでごまかすこともしたくはないので、少しだけ違う説明をします。 例を挙げまし
はじめに 過去に私がHaskellを学び始めた時、 真っ先に疑問に思ったことはモナドの存在だった。 当時は全くと言っていいほど理解できなかったが、 最近Haskellを学び直して ようやく理解することができた(と思う)。 という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。 ここではモナドの本質が何なのか概要を示す。 正確な説明は数多あるモナドについてのチュートリアルを参照されたい。 Hellow World問題: IO, Monad, fail 新しい言語を学ぶ時、まず間違いなくHello Worldを書くだろう。 HaskellでHello Worldを書くとこうなる: この1行だけを見ると普通の命令型言語と大して変わらないように思える。 ところでHaskellには強力な型推論がある。 そのため型宣言を省略しても処理系がよしなに解釈してくれる。 ただ普通はコードの意図す
Yesod is a Haskell web framework for productive development of type-safe, RESTful, high performance web applications. Yesod uses the Shakespearean family of template languages as its standard approach to HTML, CSS and Javascript creation. This language family shares some common syntax, as well as overarching principles: As little interference to the underlying language as possible, while providing
Shakespeare テンプレート Yesod は Shakespeare ファミリーを使っている。これは HTML, CSS, JavaScript を生成するためのテンプレート言語である。この言語ファミリーは、全体的に共通の構文になっている。 これらのテンプレート言語には以下の特徴がある。 コンテンツの正当性を、コンパイル時に保証する 厳密な型安全性で、XSS アタックを防止する 型安全な URL で、可能な場所では常に自動的に有効な URL であることをチェックする、 当然これらのテンプレート言語は、Yesod とは無関係に単独で使うことができる。 概要 Hamlet と Cassius は両方、ネストのためにインデントを使用する whitespace-sensitive フォーマットである。Lucius は、Cassius とはまた別の構文で、CSS のスーパーセットとして使える
2012年12月04日01:34 カテゴリHaskellイベント 誤解していたHaskell IO編 ※この記事はHaskell Advent Calendar 2012のために書かれた記事です。 読者層を考えればHaskellを既に知っている人が大多数であろうにも関わらず、 あえて自分なりのIOの解説なんぞを考えてみました。 いくぶん簡略化してはいますが、どうかご容赦ください。 公開日が予定した日付を越えていることも、どうかご容赦ください。 いきなり私事で恐縮ですが、 思い起こせば私にとって今年はHaskellの年でした。 半年ほど前、なぜかYokohama.rbという、 Rubyをやるはずの勉強会で強く勧められた結果、 私はすぐさまHaskellの勉強をはじめ、 あっという間にその魅力に取り憑かれてしまいました。 今ではすっかりYokohama.rbのHaskell担当の一人(?)です
栄光のグラスゴーHaskellコンパイルシステム利用の手引き バージョン7.8.2 The GHC Team 目次 The Glasgow Haskell Compiler License 1. 参考訳 1. GHCの紹介 1.1. GHCを入手する 1.2. メタ情報: ウェブサイト、メーリングリストなど 1.3. GHCのバグを報告する 1.4. GHCのバージョン番号付け規則 1.5. Release notes for version 7.8.1 1.5.1. Highlights 1.5.2. Full details 1.5.2.1. Language 1.5.2.2. Compiler 1.5.2.3. GHCi 1.5.2.4. Template Haskell 1.5.2.5. Runtime system 1.5.2.6. Build system 1.5.3. Lib
2015/04/27 今日GithubのHaskellのトレンドを見ていたらjaspervdj/websocketsが上がっていました。ソケット通信といえばSocket.IOな昨今ですがHaskellにもsocket-ioというバインディングが存在します。しかし何度か使おうと思って挑戦したんですがまだまだレベルが低くて使い方がわからず… 今日見つけたwebsocketは例のコードも短く使いやすそうだったので勉強がてら簡単なチャットを作ってみました。 まず依存ライブラリをインストールします {-# LANGUAGE OverloadedStrings #-} import Control.Monad (forever) import Control.Exception (finally) import Data.IORef import Data.Text (Text) import Net
1. 関数合成の例 Haskell では (.) を用いると、2つの関数を合成できる。 例えば、与えられた数値に1加える関数 add1 と、与えられた数値を2倍する mul2 がある。 add1 x = x + 1 mul2 x = x * 2 100を2倍した後、1加えるには、 *Main> add1 $ mul2 100 201 100に1加えた後、2倍するには、 *Main> mul2 $ add1 100 202 上記の関数を(.) を使い、合成したい場合、 add1mul2 = add1 . mul2 mul2add1 = mul2. add1 これを使うには、 main = do print $ add1mul2 100 --- 201 print $ mul2add1 100 --- 202 (.) を使うと、シンプルな関数を組み合わせて、複雑な関数を定義することがで
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く