2017年12月30日のブックマーク (8件)

  • 現在時刻をモックする Haskell ライブラリ time-machine を作ってみました - チェシャ猫の消滅定理

    主としてテスト時のために、現在時刻を操作する Haskell ライブラリを作成しました。Hackage にも登録済みです。 github.com 試しに次のコードを実行してみましょう。getCurrentTime しているはずなのに、返ってくる値が 1985 年 10 月 26 日になっているはずです。 module Main where import Control.Monad.TimeMachine import Control.Monad.Trans ( liftIO ) main :: IO () main = backTo (the future) $ do t <- getCurrentTime liftIO . putStrLn $ "We are at " ++ show t 作成の動機 一般論として、現在時刻に依存する関数やメソッドはテストが難しくなります。例えば次の関数

    現在時刻をモックする Haskell ライブラリ time-machine を作ってみました - チェシャ猫の消滅定理
    lotz84
    lotz84 2017/12/30
    これは便利そう👏
  • なぜ Haskell が好きなのか - 趣味はデバッグ……

    自分は Haskell が好きで休日は Haskell を書いています。そういうことを言うと関数型が好きなんですねと言われるのですが、Haskell のよさはそこじゃないと感じているので書き起こそうかと、筆を執りました。 というわけで、この記事は技術的文書というよりもお話です。Haskell を知らない人向けです。 この記事は Haskell Advent Calendar 2017 その3の6日めの記事です。6日が過ぎても担当のいない日だったため担当します。 関数型プログラミングだから Haskell が好きというわけではない まず、「Haskell というと手続き型とは全然違う関数型なんでしょう?」という印象を持つかと思いますが、一部合っていて一部まちがっていると思っています。 まず、用語の意味を絞っておかないと議論が発散してしまうのでそうしておきます。 ここでは「手続き型」は、先に書

    なぜ Haskell が好きなのか - 趣味はデバッグ……
    lotz84
    lotz84 2017/12/30
    “関数型が好きなんですねと言われるのですが、Haskell のよさはそこじゃないと感じているので書き起こそうかと、筆を執りました。”
  • 美術の人が考える Haskell - Qiita

    sketchで作成しました。 普段日銭を稼ぐためwebデザインをしておりますが業は油絵です。 Haskell初心者なので間違っている部分があるかもしれません。 数学的なこと・エンジニア的な部分は当に難しく、単語ひとつ理解するのに非常に時間がかかります。 アーティストとエンジニアは似ている部分が数多く見受けられます。 美しいものを大切にする気持ちがとても強いところ。 何度も試行錯誤を繰り返し、形を研ぎ澄ましていくところ。 世の中の「既存」から外れた部分に価値を見出すところ。 これからも、Haskellをゆっくりとですが気長に勉強していきたいと思います。 美術もHaskellも、どちらも美しいです。 以上で 美術の人が考えるHaskell を終わります。

    美術の人が考える Haskell - Qiita
    lotz84
    lotz84 2017/12/30
    Haskellの関数の振る舞いが見事な図で解説されていてわかりやすい
  • Arrowを理解する - Qiita

    これはHaskell Advent Calendar その1 8日目の記事です。 前日の記事は@nobsunさんのTree: 親子関係の付け替えでした。 対象者 すごいH読んだ 型とか型クラスわかる hlintにArrow使えって怒られたことがある 反駁不可パターンはわかる Arrowとは プログラミングには純粋な関数ではないが、関数のような雰囲気を持った構成要素が存在する。 この記事ではこれを計算と呼ぶことにする。型クラスを使えば、こういった計算に共通する構造を見つけることで、インターフェイスを提供できる。こういった抽象度の高いインターフェイスを提供することの有用性は語るまでもないだろう。ざっくり言えば実はこれがArrowである。我々が呼吸するように使う(?)Monadもこれに類するものである。ArrowはMonadと違い、複数の入力を消費できる、入力値による選択が行える、フィードバック

    Arrowを理解する - Qiita
    lotz84
    lotz84 2017/12/30
    詳しくてわかりやすい
  • 巡回セールスマン問題を遺伝的アルゴリズムを使ってHaskellで解く! - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    巡回セールスマン問題を遺伝的アルゴリズムを使ってHaskellで解く! - Qiita
    lotz84
    lotz84 2017/12/30
  • 仕組みから学ぶHaskell入門 その1:基礎文法 - Qiita

    このテキストはシリーズになっています。(なる予定です) 仕組みから学ぶHaskell入門 その1:基礎文法 (テキスト) 仕組みから学ぶHaskell入門 その2:関数と評価戦略(制作中) #このテキストの対象読者 Haskellの名前くらいは聞いたことがある人 Haskellを実用で使いたいというより仕組みをよく知りたい人 他のプログラミング言語を使ってプログラムを組んだことがある人 このテキストでは、実用的な内容にはあまり触れません。 普通にHaskellでプログラムを書きたいのであればもっと別の入門を参照するべきでしょう。 #内容の正確性について このテキストはHaskellを学び始めて間もない人間が書いているので間違いを含んでいる可能性が多分にあります。 内容に瑕疵等がありましたらコメント欄でお知らせください。 また、仕組みを説明するといってもコンパイラの仕組みを説明するわけでは

    仕組みから学ぶHaskell入門 その1:基礎文法 - Qiita
    lotz84
    lotz84 2017/12/30
  • Haskellの入門から中級者になるまでの指針 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? プログラミング言語の学習は一般に大変である。 最初にどのようなことをすればいいのか、どのをよむべきなのか等疑問は尽きない。マイナーな言語で情報が少なければなおさらである。 この記事では諸事情でHaskellに入門することになった方にむけて、どのように勉強していくか、参考にすべきや記事を紹介する。 より良い指針にするためにも、指摘、感想等はコメントや私のTwitterアカウント(@Lugendre)に投稿して頂けるとありがたい。 入門〜初心者 環境構築 まずどんなプログラミング言語においても、プログラミングをする環境が必要である。Ha

    Haskellの入門から中級者になるまでの指針 - Qiita
    lotz84
    lotz84 2017/12/30
  • Understanding Simplicity: implementing a smart contract language in 30 lines of Haskell

    lotz84
    lotz84 2017/12/30
    Blockstream社のRussell O’Connorが提唱したスマートコントラクト言語SimplicityをHaskellで実装して解説してる