タグ

haskellに関するdwarfjayのブックマーク (13)

  • Vim用のHaskellインデントプラグインvim-haskell-indentを作りました - プログラムモグモグ

    Haskellはインデントが意味を持つ言語です。コーディングするときには、エディターがいかに心地よく空気を読んでインデントを入れてくれるかが重要になってきます。HaskellのVim用インデントプラグインはこれまでいくつかありましたが、それらはどれも機能が少なすぎて、普段からHaskellを書く私にとっては苛々するものばかりでした。とても心地よいインデントをサポートしてくれるインデントプラグインはありませんでした。 とにかくHaskellの最強のインデントプラグインが欲しいということで、作りました。 VimでHaskellを書いているよという方は、ぜひインストールしてお使いください。 今のところ以下のような構文に対応しています。 データ型のインデント derivingの後はインデントをやめる guardのインデント otherwiseの後はインデントをやめる whereのインデント mod

    Vim用のHaskellインデントプラグインvim-haskell-indentを作りました - プログラムモグモグ
  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    dwarfjay
    dwarfjay 2015/10/19
    読みやすかった
  • モナド (プログラミング) - Wikipedia

    関数型プログラミングにおいて、モナドはプログラムを構造化するための汎用的な抽象概念である。対応したプログラム言語では、ボイラープレート的なコードでもモナドを使って除去することが可能となる。これはモナドが、特定の形をした計算を表すデータ型と、それに関する生成と合成の2つの手続きを提供することによって実現されている。生成は任意の基型の値をモナドに包んでモナド値を生成する手続きであり、合成はモナド値を返す関数(モナド関数)たちを合成する手続きである。[1] 広い範囲の問題をモナドを使うことで単純化できる。例えば、Maybeモナドを使えば未定義値への対処が簡単になり、Listモナドを使えばリストに入った値を柔軟に扱うことができる。複雑に組み合わさった関数は、モナドを使えば、補助データの管理や制御構造や副作用を除去した簡単なパイプライン構造に置き換えることができる[1][2]。 モナドの概念や用語

  • 【Haskell】Debug.Traceとプロファイリングで幸せなデバッグ生活 - yu-i9.tmp

    Haskell Hierarchical Librariesをぼんやりと眺めていたところ、Debug.Traceが目に止まった。効率の良いデバッグとかテストに憧れを持ち始めるお年頃なので、こういうパッケージ名に弱いのかもしれない。まあ実際、Haskellでコードを書いていると、printfデバッグができなくて悶々とする場面は結構あったので悪くはない。 以下で簡単な実行例を示していく。 また、traceStackのところでプロファイリングに関連した話が登場したので、そちらも簡単に調べてみた。 使うライブラリ Debug.Trace デバッグやモニタリング以外では絶対に使うなよ、とアナウンスされている。unsafePerfomIO(IOを外してしまう黒魔術)とかを使っているのがチラッと見えたし、確かに危なそうだなぁという気はする。 下準備 プロファイリングを行うためには、haskell-pla

    【Haskell】Debug.Traceとプロファイリングで幸せなデバッグ生活 - yu-i9.tmp
  • Haskell でのデバッグ - あどけない話

    「純粋関数型言語はデバッグしにくい。だって純粋な関数で printf デバッグできないから」とつぶやいている人をよく見かけます。これまで放置してきましたが、リツイートが50を超えたので、Haskellでのデバッグについて書きます。 例外処理と同じように、Haskell でのデバッグでは、純粋な関数と IO を分けて考える必要あります。 IO での printf デバッグ IO では、putStrLn や print が使えるから問題ないですよね? foo :: Int -> IO Bool foo i = do x <- あれして i putStrLn $ "x = " ++ show x これして putStrLn "ここも通過" -- それもする y <- それもする print y return y ちなみに、forkIO 起動した軽量スレッドから putStrLn する場合、軽量ス

    Haskell でのデバッグ - あどけない話
    dwarfjay
    dwarfjay 2015/09/26
    ほとんどのケースでは、デバッガの使い方を調べる前に問題が解決してしまう。
  • Haskell unit testing

    I'm new to haskell and working on unit testing, however I find the ecosystem to be very confusing. I'm confused as to the relationship between HTF and HUnit. In some examples I see you set up test cases, export them in an tests list, and then run in ghci with runTestsTT (like this HUnit example). In other examples, you create a test runner tied into the cabal file that uses some preprocessor magic

    Haskell unit testing
  • OverloadedStrings を使うと文字列を、Text、ByteString リテラルとして扱ってくれる。 - sirocco の書いてもすぐに忘れるメモ

    OverloadedStrings 言語拡張を使うとダブルクオートで囲んだ文字列を、Text、ByteString リテラルとして扱ってくれるようになります。あどけない話・Haskellライブラリ入門 (2011年版) {-# LANGUAGE OverloadedStrings #-} module Main where import qualified Data.Text as T import GHC.Exts( IsString(..) ) greet :: T.Text -> T.Text greet "hello" = "world" greet other = other greetTest :: T.Text greetTest = greet "hello" main = do print $ greet "hello" print $ greet "fool" > :m

    OverloadedStrings を使うと文字列を、Text、ByteString リテラルとして扱ってくれる。 - sirocco の書いてもすぐに忘れるメモ
  • Shell scripting with type-safety using Haskell

    Why is scripting usually done in dynamically typed languages? This article applies strong typing in Haskell to shell programs. The end result can still be light-weight but also save time by reducing runtime errors. We can use a DSL in Haskell (a strongly-typed functional programming language) for shell-scripting that looks very similar to bash. main = shelly $ do apt_get "update" [] apt_get "insta

    Shell scripting with type-safety using Haskell
  • 手軽にHaskell できる hawk が楽しい | そんなこと覚えてない

    コマンドラインで Haskell のワンライナーっぽいものが使える hawk ってのがあるらしくて、awk に似ているから hawk っていうらしい。 気軽に Haskell の練習できて楽しい。 インストールは $ cabal install haskell-awk らしい。 hoge:goro:mogu goro:mogu:hoge という入力があって 2列目だけ取り出したーいとかなら $ echo "hoge:goro:mogu\ngoro:mogu:hoge" | hawk -d: -m '!!2' mogu hoge という感じらしい。-m を使うと行ごとの処理がかけて -d を使うとデリミタを認識してあらかじめリストしておいてくれる。 それ意外にも情報源にできる。 奇数のリストを作って10個とりだしてみる。 $ hawk 'take 10 [1,3..]' 1 3 5 7 9

  • 不完全にしておよそ正しくないプログラミング言語小史

    1801 – ジョセフ・マリー・ジャカールがパンチカードを使った織機によってタペストリーに"hello, world"と織り出す。しかしラッダイト (当時のRedditer) たちは、テールリカージョン、並行処理、大文字小文字の区別を欠いていたため、さほど感心しなかった。 1842 – エイダ・ラブレスが最初のプログラムを書く。彼女の努力は、プログラムを実行するコンピュータが実のところ存在しないというマイナーな問題のために頓挫した。後にエンタープライズアーキテクトたちはプログラムをUMLで書くために彼女のテクニックを再び学ぶことになる。 1936 – アラン・チューリングが存在しうるあらゆるプログラミング言語を発明するが、特許化する前に英国情報部員(後の007)によって抹殺される。 1936 – アロンゾ・チャーチも存在しうるあらゆる言語を発明しているが、より巧みに行った。チャーチのラムダ

  • プログラミング言語/Haskell - プログラミングスレまとめ in VIP

    Haskellの特徴 † Haskellのおもな特徴を列挙すると次のようになる。この手の言語に慣れていない人には意味の分からないところがあるかもしれないが、それは筆者が手を抜いて説明を省いているからなので、適当にスルーしてほしい。 代数的データ型と、パターン照合。 インデントを利用した簡潔な構文。 型推論つき静的型付け。 型推論と多重定義を両立する、型クラス。 純粋な(つまり、式に副作用がない)関数型であること。 第一級の動作による入出力。 ↑ 関数型言語って何 † Haskellは純粋関数型言語に分類される。関数型言語というのは、関数的プログラミングがしやすいような言語、という意味だ。では関数的プログラミングとは何というと、これは手続き的プログラミングと比較してみるのが良い。 現在主流の言語は、ほぼ全て手続き型言語だ。手続き的プログラミングでは、コンピュータに単純な命令を出すことができて

  • *静岡県、「Haskellを地域資源に」 Haskell導入促進支援事業を開始

    やじゅ@わんくま同盟-静岡支部 システムエンジニアを対象によりよいアプリケーションを作成する上で必要な知識および経験を紹介します。 やじゅ デジタル・デザイン・ラボラトリーな日々 twitter MSMVP Microsoft MVP for Visual Basic (January 2010 - December 2012) リンク わんくま同盟 書庫 2015年12月 (3) 2015年11月 (1) 2015年10月 (1) 2015年9月 (1) 2015年8月 (1) 2015年7月 (1) 2015年6月 (1) 2015年5月 (2) 2015年4月 (2) 2015年3月 (1) 2015年2月 (2) 2014年12月 (13) 2014年5月 (1) 2014年4月 (2) 2014年2月 (1) 2014年1月 (3) 2013年12月 (5) 2013年10月 (

  • Monadius - a scientist's toy box

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 1