About Yi is a text editor written in Haskell and extensible in Haskell. External links Website: http://yi-editor.github.io/ Repository: https://github.com/yi-editor/yi Hackage page: http://hackage.haskell.org/package/yi IRC channel: #yi on Freenode
本格的にプログラミングを学び始めたのがC# with Visual Studioな私としては、充実した、とまではいかなくてもそれなりに動くIDEがないとシンドい。新しい言語を学ぶときは、まずIDE探しから始めるのだよ、はっはっは。と、全く自慢にならないゆとりっぷりを晒してしまうわけですが、事実辛いものは辛い。そしてHaskell。日本語による書籍も4冊出ていて、学習しやすくなったものの実行環境導入の敷居の高さは変わらず。GHCi(インタプリタ)でコマンド打ち込みながらやれって? いやいや、ムリムリ。 初心者にこそ強力なIDEが必要なのだよー、入力補完や背後でのコンパイルによるエラー報告、色分けにオートインデント、デバッガ。これらが素早いトライアンドエラーを可能にし、学習速度を高める。まずはメモ帳で十分、なんていうのは誤り。学習するなら最初からIDE。ということはneue cc - 最もタメ
事情により二日ばかし遅延評価となってしまい申し訳ありませんm(_ _)m 次元付き計算がいかに重要か 皆さん、量の計算をするうえで、単位を間違えちゃいけないよ、って教わったと思います。 180cm + 55kg = 235年 とかいう式は間違っていて、意味を成しませんよね。 間違えるとどんなことがおこるかって?テストに落ちるとかでしょうか。 1983年には、カナダ航空の飛行機が、燃料補給時に単位を間違えたために(間違いの本質は、22300 kgの燃料を補給すべきところ、22300 ポンド しか補給しなかったというもの)飛行中にまさかの燃料切れに陥り、お祭り会場になっていた廃空港に緊急着陸を強いられ、あわや大惨事、というギムリ・グライダー事件が起こっています。 1999年、NASAの火星探査衛星マーズ・クライメート・オービターは、制御プログラムの力の単位にポンド重とニュートンが混在していた
shell-conduit: Write shell scripts in Haskell with Conduit As part of my series of write-about-personal-projects, my latest obsession is writing shell scripts with Michael Snoyman’s Conduit. Here is my package, shell-conduit. It’s still in the experimental phase, but I don’t forsee any changes now for a while. Bash is evil I hate writing scripts in Bash. Until now, it was the easiest way to just w
修飾名を付ける 基本的に、Haskell でモジュールを import する際には、ちゃんと修飾名を付けるべきです。 これは名前の衝突を防ぐためです。 例えば以下のコードはコンパイルエラーになります。 putStrLn が Data.Text と Data.ByteString の両方に存在しているからです。 import Data.Text import Data.ByteString main = putStrLn "" これが衝突しなかったら自由に import していいのかというと、これもやめておいた方がいいでしょう。 というのも、依存パッケージをバージョンアップした時に関数が増えた場合、その関数が他のパッケージの名前を重複する場合があるからです。 module Module.Oreore (oreore) where oreore = undefined module Modul
並列・並行プログラミングはプログラマの重要な関心事であり、常に注目を集めている話題です。これまで、関数型言語は並列・並行プログラミングに有利であると言われてきましたが、それを説明する書籍はありませんでした。本書では、純粋関数型言語Haskellが提供する並列・並行プログラミングの機能を俯瞰し、実践的な問題を解いていきます。その根底にある考え方は、関数プログラミングの核心であるモジュラリティです。また本書では、実際の問題を解決するときに陥りがちな落とし穴や、高い性能を出すためのtipsなどをまとめています。 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認
See Iavor Diatchki’s page “The Evolution of a Programmer” for the “original” (though he is not the author), and also below for the story behind this version. (This page has been translated into the Serbo-Croatian language by Anja Skrba from Webhostinggeeks.com. Thanks, Anja, for all your hard work!) Freshman Haskell programmer fac n = if n == 0 then 1 else n * fac (n-1) Sophomore Haskell programme
まず、下記の10行程度のScalaコードをご覧ください sealed abstract class Foo[A, B] final case class X[A]() extends Foo[A, A] final case class Y[A, B](a: A, b: B) extends Foo[A, B] object Main { def hoge[F[_, _], A, B, C](foo: Foo[A, B], bar: F[A, C]): F[B, C] = foo match { case X() => bar case Y(a, b) => ??? // Yの場合のコードはどうでもいいので } } これは、コンパイルエラーになります(Scala2.11.1)。しかし、HaskellでGADTs使って同様のコード書くと、コンパイル通るらしいです。これの話をします。*1 Sc
GADTについて、この解説が分かりやすい(英語)。 http://en.wikibooks.org/wiki/Haskell/GADT 背景 Haskell(というか関数型言語一般)の素晴らしい機能の一つ、代数的データ型を使うと、抽象構文木(AST)をHaskellの枠組みの中で表現できる。 例えば、整数の足し算・引き算ならば、 data Exp = Const Int | Add Exp Exp | Subtract Exp Exp さらにこのASTを数値一般に使いたいので型パラメータrをつけて多相にしてみる。 data Exp r = Const r | Add (Exp r) (Exp r) | Subtract (Exp r) (Exp r) これを使えば、例えば(3 + 4) - 2という数式は、Subtract (Add (Const 3) (Const 4)) (Const
このエントリは、Haskell Advent Calendar 2011の参加記事です。 今回は、HaskellのGHC拡張であるGADTs(Generalized Algebraic Data Types : 一般化代数データ型)を調べて使ってみたという内容を書いてみました。 最初に、GADTsはGHC拡張なので、使用するには以下のようにして拡張を有効にする必要があります: {-#LANGUAGE GADTs #-} まずは構文的な違いを、Maybeを例にして見てみましょう。 通常の代数データ型では、Maybeは以下のように書きます: data Maybe a = Nothing | Just a GADTsでは以下のように書きます: data Maybe a where Nothing :: Maybe a Just :: a -> Maybe a 通常の代数データ型では、データコンス
GHCJS 自己紹介 Twitter: @pasberth 興味: プログラミング言語(関数型), 型システム Haskell が好き GHCJSとは HaskellをJavaScriptにコンパイルできる GHCの機能(言語拡張,ライブラリ,etc…)がなんでも使える ライバル: Haste, Js_of_ocaml, Scala.js … 導入編 Installation方法は2つあります: ソースをビルドする方法 バイナリをダウンロードする方法 ソースをビルドする ghcjs/ghcjs というリポジトリの README にソースコードから ビルドする手順がかかれています。 わりとイバラの道です。覚悟を決めてインストール に望みましょう。 バイナリをダウンロードする ghcjs/ghcjs-build というリポジトリに Vagrantfile があります。 環境によってはハマること
PFI セミナーで Template Haskell の機能 と Haskell での総称プログラミングの手法を解説したスライド。 スライド中で使用したサンプルはこちらに: http://github.com/konn/Meta-Programming-in-Haskell-ExampleRead less
{-# LANGUAGE OverloadedStrings #-} import Web.Authenticate.OAuth as OAuth -- authenticate-oauth-1.4.0.4 import qualified Data.Aeson as JSON -- aeson-0.6.1.0 import Data.Conduit -- conduit-1.0.0 import Network.HTTP.Conduit -- http-conduit-1.9.0 import Network.HTTP.Types -- http-types-0.8.0 import Network (withSocketsDo) oauth :: OAuth.OAuth oauth = OAuth.newOAuth { OAuth.oauthServerName = "twitter"
tl;dr: Learn how to start a new Haskell project. Translate a starter tool written in zsh in Haskell using its own result. “Good Sir Knight, will you come with me to Camelot, and join us at the Round Table?” In order to work properly with Haskell you need to initialize your environment. Typically, you need to use a cabal file, create some test for your code. Both, unit test and propositional testin
ocharles.org.uk Special Pages 24 Days of GHC Extensions 24 Days of Hackage 2013 24 Days of Hackage 2012 All Posts The list of monoids pattern Monad Transformers and Effects with Backpack Who Authorized These Ghosts!? Solving Planning Problems with Fast Downward and Haskell Providing an API for extensible-effects and monad transformers Announcing transformers-eff Monad transformers, free monads, mt
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く