タグ

haskellに関するtsukkeeのブックマーク (32)

  • ghc-mod を利用した neocomplcache のプラグイン neco-ghc (ghc_complete.vim) を書いた - EAGLE 雑記

    せっかく Emacs とは独立して ghc-mod が書かれているので,これを Vim での補完にも利用したいなーと思って書いた. ghc-mod は hackage で公開されているため,cabal install ghc-mod でインストールできる. http://www.mew.org/~kazu/proj/ghc-mod/ http://hackage.haskell.org/package/ghc-mod neocomplcache 体はこちらから.現時点での最新版で実装された ftplugin として書いたのでリポジトリにあるものでないと動かない. http://github.com/Shougo/neocomplcache この ghc_complete.vim を autoload/neocomplcache/sources に置くことで neocomplcache の

    ghc-mod を利用した neocomplcache のプラグイン neco-ghc (ghc_complete.vim) を書いた - EAGLE 雑記
  • 素数判定 - あどけない話

    要約:素数判定に使われるミラーラビン法を解説しながら、Haskell で実装してみる。 フェルマーテスト 大きな数を確実に素数だと判定するには、大変時間がかかるので、実用的には「ほぼ素数だ」と確率的に判定する。確率的な素数判定の代表格がフェルマーテストである。 フェルマーテストには、以下に示すフェルマーの小定理を利用する。 a^p ≡ a (mod p) a は任意の整数。p は素数である。法 p の下で a を p 乗したものは、a と合同であると言う意味だ。a には制限はないが、特に a を p より小さい整数、0 ≦ a ≦ p - 1 とすれば、a を p 乗して、p で割ると a に戻るとも解釈できる。 最初に見たときは、だからどうしたと思われるかもしれない。しかし、有名なフェルマーの大定理が実用上何の役にも立たないのに対し、フェルマーの小定理はいろんな場面で活躍する。 実際に計

    素数判定 - あどけない話
  • Inemuri nezumi diary(2009-05-03)

    いけがみを召喚するには、出現予定を参考にしてください。三週間前までにメールをくだされば、日程を追加するなどしてスケジュールに組み込むことができるかもしれません。勉強会や個人的な会合、中途採用面接などに応じます。 _ Haskell のまなびかた(2009-05-03版) わたしがはじめて Haskell の処理系を触ったのは 2004 年の春ですから、もうかれこれ 5 年の歳月がたったことになります。はやいものだなあ。当時に比べて書籍もサイトも充実してきたので、学びやすくなったとは思います。 しかし、GHC がデファクトスタンダードになりましたが、GHC の変化が著しいこと、GHC が *nix 以外のプラットフォーム(つまり WindowsMacOSX など)でバグが多いこと、ライブラリが爆発的に増えた一方でその依存性を解決する方法がまだ確立していないことなど、現在でも Haske

  • Yi - HaskellWiki

    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

  • 還暦プログラマの挑戦(Haskell に挑む→F#による言語造り)

    メニュー Home できごころ プロフィール F# 言語作りはこちら ↑これは、古い ↓こちら、参照 F# 言語作り リトライ ここがメイン 3D遊びに奪われ気味 3次元CAD事始め Autodesk 123D Design Fusion360 Fusion360 覚書 Fusion360 ギャラリー ギャラリー 開始しました Haskell再開 古い記事削除 Haskell リターンズ 今(2013年)は、 ここがメイン のつもりが、挫折 Python のお勉強 DotNet Framework DotNet3 SQL Server 日記 日記は、2015年9月で終わり、 というか ブログ新設:こちらに移設 15年09月 15年08月 15年07月 15年06月 15年05月 15年04月 15年03月 15年02月 15年01月 ○2014年

  • 実践的な Haskell の本 - あどけない話

    Perl6 は何年経っても正式にリリースされません。そんな Perl6 を Audrey Tang さんは、たったの数ヶ月で作りました。その実装は Pugs と呼ばれています。短期間の開発を可能にした秘密兵器は Haskell です。 その Audrey さんが、2006年に日で Haskell について説明してくれました(資料)。残念ながら、そのころの僕は Haskell に興味がなかったのでチュートリアルは受けていませんが、その概要にはこう書かれています。 コーナーケースを探すのにユニットテストを書くのに疲れた? QuickCheck を使ってコンピュータに書かせちゃいましょう。正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分で Perl6 の完全なパーサを書く方法を勉強しましょう。デッドロックやレースコンディションはもううんざり? STM

    実践的な Haskell の本 - あどけない話
  • Haskell でヒューメインインタフェース。モナド記法を使わないで IO してみる - 言語ゲーム

    誰にも頼まれてないのに Haskell の復習をしています。前から気にくわなかったのが Haskell の do 記法です。例えばコンソールから二つの文字を入力して結果を出すだけのプログラムをこういう風に書きます。 main' = do num1 <- getLine num2 <- getLine print $ read num1 + read num2 これはかったるい!そう思いませんか?何故次のように書けないのか!これはモナドが悪いのか? main'' = print ( read getLine + read getLine ) そういうわけで、素人ながらもうちょっとマシに書けるのでは無いかと試してみました。 まず、read getLine と書けない件。getLine はコンソールから文字列を受け取るモナドだけど、read は文字列自体を受け取る関数なのでうまく合わない。例えて

    Haskell でヒューメインインタフェース。モナド記法を使わないで IO してみる - 言語ゲーム
  • Vimからhrefを見る - ボクノス

    さっくりと設定っと。 command! -nargs=1 Href !href <args> | nkf -w nmap <buffer> K :Href <cword><CR> とりあえずオッケー。

    Vimからhrefを見る - ボクノス
  • 無限リストと遅延評価: Days on the Moon

    IT 戦記で Haskell のリストを JavaScript で書くというのをやっている。これは面白い。ただ、そのまま書くと無限リストが無限再起に陥ってしまうので、遅延評価を行わなくてはいけない。 関数式を使った遅延評価 JavaScript で遅延評価を行うにはどうすればいいか。その答えのひとつが関数式だ。リストの各セルを、先頭の値と後続のリストという構造ではなく、先頭の値と後続のリストを返す関数という構造にしてやれば、リストの最初のセルを評価した時点で残りのセルがすべて評価されるという事態を防げる。 具体的には、リスト構築の際、後続のリストそのものの代わりにリストを返す関数を渡し、後続のリストを得るときは関数呼び出しを伴うようにすればよい。なお、ここでは空リストを表現するのに nil という特殊な値を用いる。nil は先頭の値も後続のリストも nil 自身であるリストである。 var

  • 3分で解るHaskellのArrowの基本メモ - よくわかりません

    語でArrowの説明があまり見付からなかったので、Haskell/Understanding arrows - Wikibooks, open books for an open worldを読んで理解したつもりのメモ。オリジナルの図を見ながらだと分かりやすいかも。誤り・間違いなど、乞うご指摘。 b->cな関数をArrowなるからくり箱に入れると、 (Arrow a) => a b c こんな型になる。型パラメタが、引数のbと返値のcのふたつ。 Monadは、値をからくり箱に入れたもの。からくり箱は基的に(ヘンな)値。 Arrowは、関数をからくり箱に入れたもの。からくり箱は基的に(ヘンな)関数。 arr :: (b -> c) -> a b c Monadでは、値をからくり箱に入れる関数returnがある。 Arrowでは、関数をからくり箱に入れる関数arrがある。 (>>>)

    3分で解るHaskellのArrowの基本メモ - よくわかりません
  • Real World Haskell

    Why functional programming? Why Haskell? 1. Getting started 2. Types and functions 3. Defining types, streamlining functions 4. Functional programming 5. Writing a library: working with JSON data 6. Using typeclasses 7. Input and output 8. Efficient file processing, regular expressions, and file name matching 9. I/O case study: a library for searching the filesystem 10. Code case study: parsing a

  • Getting started with Yi, the haskell editor

    Getting started with Yi, the haskell editor (2008) What’s Yi? Yi is an emacs-like editor written in haskell. It is, as they say, made of awesome. I first heard of Yi in early 2007 when Ben Moseley mentioned it at the pub during MGS 2007. It took me nearly a year to get around to looking at it. But now that I have, I think it’s really cool. It’s a text editor, with a GUI and lots of state - which i

    tsukkee
    tsukkee 2008/10/13
    Haskellで書かれたEmacsライクなエディタらしい
  • 第16回 Haskellでのテストの自動化を考える

    皆さんはプログラムが正しく動作することをどうやって調べていますか? いちいち実行して確認している人もいるかもしれませんが,多くの人はツールや自作のプログラムを使って何らかの形でテストを自動化しているでしょう。ここ10年くらいで「テストの自動化」はプログラマにとってなじみの深い概念になりました。今回はHaskellでのテストの自動化を取り上げます。 型検査を利用する 実は,Haskellを使っていれば,すでにテストはある程度自動化されていると言えます。 第12回と第13回で説明したSTMでは,STMモナドという特別なモナドを使い内側にI/Oアクションを記述できなくすることによって,取り消し不可能なアクションが入り込むことを防いでいました。 Prelude Control.Concurrent.STM> atomically (writeFile "sample.txt" 12) <inter

    第16回 Haskellでのテストの自動化を考える
  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • 30分プログラムリスト - みずぴー日記

    Perl 30分プログラムをYAMLに - みずぴー日記 逆ポーランド計算機 - みずぴー日記 fortune - みずぴー日記 lcs.pl - みずぴー日記 CGI.pl - みずぴー日記 oop.pl - みずぴー日記 busybox.pl - みずぴー日記 db.pl - みずぴー日記 xmlrpc.pl - みずぴー日記 kaibun.pl - みずぴー日記 対話式Perl - みずぴー日記 flist.pl - みずぴー日記 foldrとfoldl - みずぴー日記 Perlで継続 - みずぴー日記 3n+1問題 - みずぴー日記 Tie::String - みずぴー日記 はてなユーザ確認スクリプト - みずぴー日記 携帯メッセージ - みずぴー日記 howm-to-はてな - みずぴー日記 30分プログラム日記ジェレネータ - みずぴー日記 howm-&gt;はてな(その2)

    30分プログラムリスト - みずぴー日記
  • 型とかちゃんとみるprintf - ミラクル☆モテメンの脱オタ日記

    そんなんできるのか、と思ってたけど分かってしまえば簡単…なのか? import Numeric (showHex) type Format a b = (String -> a) -> String -> b format :: Format String a -> a format f = f id "" q :: String -> Format a a q x = q' where q' k s = k (s ++ x) str :: Format a (String -> a) str k s x = k (s ++ x) int :: Format a (Int -> a) int k s n = k (s ++ show n) hex :: Format a (Int -> a) hex k s n = k (s ++ showHex n "") (&) :: Format b

    型とかちゃんとみるprintf - ミラクル☆モテメンの脱オタ日記
  • 'balloneval'を使ってみる/式の型を推論させる - ミラクル☆モテメンの求心力ダイアリー

    ftplugin/haskell.vim に setlocal balloonexpr=system('echo\ :t\ '.substitute(v:beval_text,'&','^^^&','g').'\ \|\ ghci\ -v0\ '.expand('%'))[0:-2] setlocal ballooneval [0:-2] で末尾の改行文字を落とす。"&" を "^^^&" にエスケープするのは Windows だからだけどなんで2回もエスケープさせられるんだろう? まあ正直 ballooneval なんて使わなくて、 nnoremap <buffer> <silent> gK :echo system('echo :t '.substitute(expand('<cword>'),'&','^^^&','g').' \| ghci -v0 '.expand('%'))[0

    'balloneval'を使ってみる/式の型を推論させる - ミラクル☆モテメンの求心力ダイアリー
  • 関数と演算子 - deq blog

    関数と演算子についてちょっとだけ深く知りたい人のために。 ビンゴ中西のほげほげmalloc or calloc ややこしいが sizeは具体的に10とかの数字で、 sizeof( ) は演算子であることに注意! 演算子なのに( )が付くのはPerlPHPと同じ配慮だと思っておこう・・・ 実は PerlPHPでもどうして演算子に( ) が付くのが許されてるのか理解してないが・・・ 関数みたいにどうしても見えるから?? print とか echo とか 確か関数じゃないのに( )付けれるんですよね。。。 まあ、あったところで、特に問題ないように 思うのですが、、、 なにか 多くの書物で これらは 関数じゃないですけど ( ) を付けることを 許しています とだけあって、 その理由がのってないんですよねぇ。。。 たんに見た目にわかりやすいように というだけなんでしょうか・・・ そもそも僕には

    関数と演算子 - deq blog
  • Route 477(2007-12-02)

    ■ [event][prog] LiveCoding#5に出演しました 土曜日に大阪で行われたイベントLiveCoding#5に、 LiveCoderとして出演してきました。 事前に、LivePromoter(※主催者のことらしい)であるujihisaさんから できるだけマニアックな方がいいというオーダーを受けていたので、 Ruby + Javascript + Scheme + Zu という無茶な構成にしてみました(笑)。 *1 BiwaSchemeで 「ず」のインタプリタを作るというテーマだったのですが、 予想外に手間取ってしまい、パース結果をRubyCGI経由で取ってくるとこまでしか行きませんでした。 解説のnaoya_tさん、Abeさんごめんなさい(><) 敗因 Ajaxのクロスドメイン制約を忘れていた CGIはサーバに、htmlはローカルに置くつもりだったんですが、どちらかに統

    Route 477(2007-12-02)
  • Haskell mode for Vim - ボクノス

    omni補完、ヘルプ、デバッグなどお便利機能満載。 Haskell mode for Vim いい感じかも。 激しく使えそうなコマンドが、 :GHCi mainghciで関数mainを作用させられる。 ちょっと面倒なので、~/.vim/after/ftplugin/haskell.vimにをmapしてっと。 function! s:GetSelect() range let saved_reg = @" silent normal `<v`>y let str = @" let @" = saved_reg return str endfunction function! s:SaveAndEval(str) w % exe "GHCi " . a:str endfunction vmap <buffer> <silent> <C-CR> :call <SID>SaveAndEval(<S

    Haskell mode for Vim - ボクノス