プロジェクトマネジメントで娘の夏休みの宿題炎上を防止しました 娘の夏休みの宿題プロジェクトの炎上 8歳9歳の娘が朝から泣きわめいていたので、何ごとかと思い話を聞いてみました。泣きじゃくっていたので要領を得なかったのですが、まとめると以下みたいでした。 「宿題やったのに、ママがテレビを見せてくれない。自分は頑張った…
![はてなブログ | 無料ブログを作成しよう](https://cdn-ak-scissors.b.st-hatena.com/image/square/06a15c64ba0ceec233d86d71001ebb29a9dcbf5d/height=288;version=1;width=512/https%3A%2F%2Fcdn.blog.st-hatena.com%2Fimages%2Ftheme%2Fog-image-1500.png)
最近では、何かプログラムを書くときは、Haskell を使うようにしています。Haskell でスクリプトを書くと困ることの一つに、コマンドライン・オプションの処理があります。 IOモナド地獄 System モジュールで定義されている getArgs は IO [String] を返します。そこで、型が IO () である main などから以下のように使うことになります。 -- "-c" オプションを調べる import System main = do argv <- getArgs let cflag = "-c" `elem` argv -- ここに何か書く この方法には2つ問題があります。 main で getArgs を使うと、コマンドライン・オプションの処理結果(cflag など)を下位の関数にずっと渡していかないといけない コマンドライン・オプションの処理結果が必要な関数で
Uncle Bob recently wrote an article showing a simple orbital simulator in Clojure. Aside from the strange formatting, the code is pretty easy to follow, though there is large amounts of duplicate code (see vector.clj vs. position.clj). I guess the reasoning behind this is to try to stop mixing up units? A phantom type is one way to avoid this duplication in Haskell. A phantom type is only ever use
Haskell は数値の型を合わせないと計算出来ません。それは他の言語も同じですが、 Haskell には型推論があるため、変換しようとする型を直接指定するのでなく、中間としてジェネリックな型を指定して、あとは Haskell におまかせするというようなイメージです。 (参考:Real World Haskell p153 表6-4 数値間の変換) また、コンパイラが勝手にキャストとするということはありません。 整数(Int、Integer)の型が違う場合は fromIntegral を使って Num にして型を合わせてから計算する。 fromIntegral は Integral型からNum型に変換する関数です。 ghci> (fromIntegral (2::Int)) + 3::Integer --> 5 ghci> :t fromIntegral fromIntegral :: (
abstract: this article shows how to install and run Yesod, a famous Haskell web framework for its simplicity to use and its difficulty to install. I wrote how I did it for whoever wants to install Yesod, and for myself. Yesodのインストールにまる1日かかりましたが何とか上手くいったので、その方法をまとめておきます。 はじめに ご存知の通り、YesodはHaskellで書かれたwebフレームワークです。初心者にとって比較的扱いやすい反面、インストールまでが修羅の道ということで非常に有名ですね。 今回はその悪名高いYesodの環境構築方法をまとめました。 さてYesodのイ
最近Haskell熱が再燃中ってこともありふと思い立って。 インタプリタだけでなく、x86_64アセンブリコードを出力する機能も実装しました。 (今さらなテーマなのは重々承知…) https://github.com/jou4/Brainf FreeBSD 9.0, Ubuntu 12.10, Mac OS 10.6.8で動作することを確認しています。 haskell-platformをインストール済みであればソースコードをダウンロードしてmakeすれば使える状態になると思います。 使い方は以下のとおり。 $ ./bf -e ">++++++++++[<++++++++>-]<." ファイルも渡せます。 $ ./bf example/hello.bf $ ./bf < example/hello.bf アセンブリを出力するにはオプション[-s]を渡します。 $ ./bf -s exampl
1 Monoid 2012.11.18 2 (a b) c = a (b c) Monoid (a b) c = a (b c) e a = a e = a (a b) c = a (b c) e a = a e = a a a-1 = e Semi ring fusion 3 Q) Monoid A) 1 Monoid 4 Monoid doctest data Summary = Summary { sExamples :: Int , sTried :: Int , sErrors :: Int , sFailures :: Int } deriving Eq instance Monoid Summary where mempty = Summary 0 0 0 0 (Summary x1 x2 x3 x4) ‘mappend‘ (Summary y1 y2 y3 y4) = Su
Get Started Learn how to build concurrent, distributed programs with Cloud Haskell Learn more Cloud Haskell: Erlang-style concurrent and distributed programming in Haskell. The Cloud Haskell Platform consists of a generic network transport API, libraries for sending static closures to remote nodes, a rich API for distributed programming and a set of platform libraries modelled after Erlang’s Open
Haskell で parser を書くには (初心者編) 勝手に Haskell Advent Calendar 2011 Haskell Advent Calendar 2011 にはエントリーできませんでしたけど、一人寂しく「勝手に Haskell Advent Calendar 2011」を開催して、わくわくクリスマスを待ちたいと思います。 目的: Parsec3 と attoparsec の基本的使用法, Applicative スタイルを習得する 前置き: Haskell で parser を書くにはどうすればいいのでしょうか? 私は、これを勉強すべく情報源を探しましたが、一体どこからどう始めればいいのか分からず、非常に混乱しました。「この記事を読めば大体概要が全部分かる」という情報源が日本語でも英語でも見つけられなかったからです。なので自分でまとめてみることにしました。 (私
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
この記事では, Haskellに用いられる「遅延評価」の仕組みを, 図に描いて説明します. 更に, 遅延評価版のフィボナッチ数の無限列を, JavaScriptで実装します. 遅延評価とはどのように動くのか, 考えて行きましょう. HaskellのコードとJavaScriptのコードの比較 Haskellでの x = y y = 10 と, JavaScriptの var x = y; var y = 10; というコードを考えてください. Haskellのコードは, これだけでは何も起こりません. print xとすると, x = y = 10 となって 10 が表示されます. 一方, JavaScriptのコードは var x = y; を評価した瞬間, 「ReferenceError: y is not defined」というエラーが出ます. 更に, main = let x = 1
連載目次 第0回: 概要 (この記事) 第1回: Gameモナドの基本 先ほど、free-gameというライブラリをアップロードしました。free-gameは、世界で一番柔軟かつ簡単にゲームなどのGUIを作れるライブラリを目指しています。 Freeモナドとは Freeモナドは、Functorを与えると自動的にモナドを生成してくれる構造で、これを使うことで、アクションをデータの一つとして柔軟に扱えるようになります。去年の10月ごろからにわかに日本のHaskeller間で流行り始めた、今一番熱いモナドです[要出典]。Freeモナドそのものに関してはこれらの記事を読みましょう。 Haskell for all: Why free monads matter そろそろFreeモナドに関して一言いっとくか 型クラスとモナドと Free モナド - あどけない話 Freeモナドって何なのさっ!? -
連載目次 第0回: 概要 第1回: Gameモナドの基本 (この記事) free-gameを使う さて、みなさん、free-gameはインストールしましたか?まだの型方も、もうインストールした方も、本日free-gameを更新したのでcabal update && cabal install free-gameしましょう。 2013/5/6: free-game 0.9.3をリリースし、内容も改訂しました。必ずcabal update && cabal install free-gameしてください。 free-gameは、Gameモナドという独自のモナドによってGUIの抽象化を実現しています。GameはFreeモナドによって生成されたモナドであり、元は単なるFunctorです(これが何を意味するかは、連載の中で明らかにしていきます)。 今回は、実際にプログラムを組みながら、どのようにして
サンタとConduit (Haskell Advent Calendar 23日目) Tag: Haskell ※これはHaskell Advent Calendar 2012の23日目の記事です。もうすぐクリスマスです。サンタクロースの皆さんはそろそろ子供達にプレゼントを配る用意をしなければいけません。ところで、最近のサンタクロースはIT化が進み、どうやらHaskellでプレゼントを配るシステムを使っているそうです。新米サンタさんはクリスマスまでの残り2日で、このシステム通りにプレゼントを配る方法を覚えなければいけません。新米サンタさんはどうやらHaskellの基本的な使い方は覚えたようですが、このプレゼント配送システムに"Conduit"という聞きなれない物が使われているので、うまく扱えるか心配です。Conduitは主にストリーム処理用に作られたライブラリで、Source, Sink,
Haskellでのデバッグといえばprintfデバッグなのではないかと思う。printfデバッグは大抵の場合うまくいくが、多相的な関数を書いているときは不便なことがある。表示したい値を文字列にする手段がない場合だ。 import Debug.Trace import Data.List mysort :: (Ord a) => [a] -> [a] mysort [] = [] mysort (x:xs) = trace ("inserting " ++ show x) $ -- エラー! xはshowできない insert x $ mysort xs main = print $ mysort [1,3,2,0] -- デバッグ用入力 実際のデバッグ入力であるIntegerはshowできるのだが、mysortの型からはそれが演繹できないのでshowを呼ぶことができない。ここでxを表示する
Figure 5.3: The syntax of Core A typical structure for a compiler for a statically-typed language is this: the program is type checked, and transformed to some untyped intermediate language, before being optimised. GHC is different: it has a statically-typed intermediate language. As it turns out, this design choice has had a pervasive effect on the design and development of GHC. GHC's intermediat
来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く