タグ

Haskellに関するyouzのブックマーク (25)

  • GitHub - i-tu/Hasklig: Hasklig - a code font with monospaced ligatures

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - i-tu/Hasklig: Hasklig - a code font with monospaced ligatures
    youz
    youz 2014/10/15
    > Hasklig - a Haskell code font with monospaced ligatures
  • The Music Suite

    let m = staccato (scat [c,d,e,c]|/2) |> ab |> b_ |> legato (d |> c)|*2 in stretch (1/8) m To transform music, we write a function. For example the following function halves all durations and transposes all pitches up a minor sixth: up m6 . compress 2 Applied to the above music we get: Input and output The Music Suite works well with the following input and output formats. MusicXML Lilypond ABC not

  • ポイントフリースタイル入門 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    Haskell にはポイントフリースタイルというのがあります。 例えば foo x = f (g x) という中の x というのが「ポイント」と言うらしいです(型を明示していないから x の型が a->b だったりする可能性もあるけどその可能性は置いといて)。要するに値のことですね。 で、このポイントを除けてプログラミングするのをポイントフリースタイルと言います。 この場合、 foo = f.g となります。 ということで、ありとあらゆるコードをポイントフリースタイルで書けるように訓練しましょう。 基的に、書いてれば慣れるのでどんどん書きましょう。 基的に (.) 関数を使います。 foo x = f (g x) foo x = (f.g) x foo = f.g です。 また、(.) は二項演算子なので、これを関数形式で書けば、 f.g = (.) f g となり、更に = (

    ポイントフリースタイル入門 - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • Function call expression 参戦記 - Life Goes On

    公私ともにバタバタしていて、blog も twitter も放置していますが、どうにか生きてます。 anarchy golf - Function call expression に関して、youzさんが解説を書けと言ってるので、2位という立場で僭越ながら書いてみる。 2週間前に問題を見て、なんて好みの問題だろうと思い、誰も参加してないけど submit。 こういう処理系ちっくな問題のときはだいたい、Parsec で考えを整理してから実装してる。今回もまずParsec で下書き。 import Text.ParserCombinators.Parsec m @ main = getLine >>= putStrLn . either show id . parse expr "" >> m expr = do f <- char 'f' xs <- many $ do char '(' e

    Function call expression 参戦記 - Life Goes On
    youz
    youz 2011/05/24
    ありがとうございます。ありがとうございます。
  • Grass のインタプリタを書いてみたよ - Life Goes On

    Haskell で Grass のインタプリタを書いてみました。以前から書いてみたいとは思っていたのですが、どこから手をつければいいものやら分からず、半年近く経ってしまいました。悲願達成。 Haskell 版は既に mr_konn さんが書いているので、目新しいものではありません。あくまでも自分のため。 とりあえず動くものはできたのですが、まだまだ改善の余地がありそう。悩んでいるのはこんなところです。 サンプルの「はいはいわろすわろす」を動かしたい(Shift_JIS とかでの出力もしたい)ので、UTF-8 モジュールは使っていません。そうすると自前で全角文字のハンドリングをする必要があります。UTF-8 なり Shift_JIS なり EUC-JP なり決め打ちで変換することになりそう(関数 filter')なのですが、もうちょいスマートなやり口はないものでしょうか。あと String

    Grass のインタプリタを書いてみたよ - Life Goes On
  • hh.gif - 兼雑記

    7割くらい書いたところで存在を忘れていました。 http://slashdot.jp/sp/binary2008/bin2008_shinh.shtml 何かに使えることがあるかもだから(無いと思うが) com2txt 書いとくかーと書いたのでした。オリジナルの com2txt は短すぎないか。 base64 よりはちょっとデコードしやすそうなフォーマットだとはいえ。ただうちでは動かんかったのだけど。 でまぁ com2txt だけじゃつまらないのでどうでもいいネタをしょぼしょぼしこんだのでした。 以下解答。 ruby hh.gif > hh_ruby.comとかで出てきたファイルは ASCII のみで表現された Happy Hacking! と出力する COM ファイル オリジナルの GIF ファイルを出力する Ruby スクリプト オリジナルの GIF ファイルを出力する Perl スク

    hh.gif - 兼雑記
  • CommonLispでlist comprehension - 関数型日記(仮)

    しょぼい組み込みHW屋の私が現実逃避のため関数型言語の勉強を始めました.それはそうと,VdGG観てきました.peter hammillが神すぎて困りました.次も観るぞ! Haskellのlist comprehensionっぽい何かをCommonLisp(xyzzy上)で実現してみました.hugsで深追いしていった結果,なんとなーくその裏の実装の見当がついたので,まぁモノはためしにやってみようかと. まず,こんなのを, [x | x <- [1,2,3,4,5], x < 3] CommonLispで実装すると,こんな感じ. (let ((x '(1 2 3 4 5))) (mapcar #'(lambda (x) x) (remove-if-not #'(lambda (x) (< x 3)) x))) Haskellのgeneratorはまずletに置き換えました.letはこの場合別に

    CommonLispでlist comprehension - 関数型日記(仮)
  • monjudoh’s diary

    r.js RequireJS用のmoduleをビルドする際にはr.jsを使います。 build.js この時にビルド設定の記述に使用するのがbuild.jsでこんな感じで書きます。 簡単な例だとこんなの ({ baseUrl:'./src', dir : './build', paths:{ jquery:"../lib/jquery-1.8.2", text:'../lib/plugins/text', underscore:'../lib/underscore-1.3.3' } }) 動的なbuild.js build.jsはJSONではなくてJSです。 JSなので処理を書くことが出来ます。 例えば関数その場実行を含む下記のbuild.jsは、上記のものと同じ設定を表します。 ({ baseUrl:'./src', dir : './build', paths:(function ()

    monjudoh’s diary
  • de Bruijn index の評価器 - まめめも

    unlambda から brainfuck への変換器を作ろうしていましたが、なぜか de Bruijn index のラムダ式の評価器を Haskell で作った時点で飽きました。そんな残骸ですが、メモ代わりに公開します。de Bruijn index でも代入の定義はやっぱり複雑なんですね。 de Bruijn index はラムダ式の記法の一種です。普通のラムダ式と違うのは、変数を文字列ではなく数字で表現するところです。その数字のある位置から左方向にλを数えていって、その数字番目のλで束縛された変数を指示します。例えば λx.x は λ 1 になり、λx.λy.x は λ λ 2 に、λf.λg.λx.f x (g x) は λ λ λ 3 1 (2 1) になります。詳しくは wikipedia:de Bruijn index を参照してください。 -- ラムダ式 (出力機能付き)

    de Bruijn index の評価器 - まめめも
    youz
    youz 2008/10/01
    de Bruijn index
  • Haskell のリストと遅延評価が少し分かった - IT戦記

    いろいろ試行錯誤をしていて JavaScript の関数を作って呼び出すのと Haskell のそれとの決定的な違いを見つけた。 それは、たぶんものすっごい単純で当たり前なことだけど、これが分かったとたんに僕の周りのピースが一気に繋がったので、恥をしのんで書く。 僕は以下のように脳内変換していて Haskell a = 1 iszero i = if (i == 0) then True else False Javascript a = function() { return 1 } iszero = function(i) { return i()/*評価は関数呼出し*/ == 0 ? True : False } // True False はこう True = function() { return true } False = function() { return false

    Haskell のリストと遅延評価が少し分かった - IT戦記
  • Gauche:$

    これはあくまで好みの問題ですし、こういった構文糖衣は濫用されがちなので 気をつけてください。けれどもスパイスのように、控えめな隠し味として使うと、 しばしばとても有用です。 It is purely a matter of taste, and also this kind of syntax sugars can be easily abused. Use with care, but it may work well if used sparingly, like spices. from GaucheRefj:$ GaucheRefe:$ Shiro (2008/02/01 00:59:54 PST): Haskell Envy Haskellの$がうらやましかったのですよ。 fn1 (fn2 (fn3 (fn4 x))) と書くかわりに fn1 $ fn2 $ fn3 $ fn4

    Gauche:$
  • 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)
  • 便乗 ゆの in Haskell - blanket log

    http://d.hatena.ne.jp/ranha/20080709/1215658800 まぁ少なくとも片方は #define 使う必要ないですよね。 #define _ X import Prelude hiding((<),(/)) data X = X a / b = X a < b = putStrLn $ "Hidamari Sketch 365 " ++ b main = X / _ / X < "Please see next week!" #define 使ったら負けかなとは思うんですが、_ はどうなんでしょう…。パースエラー出ない場所が限られてますしねぇ。 追記 Haskell で日語を使うには: http://ja.doukaku.org/comment/3513/ , http://hackage.haskell.org/cgi-bin/hackage-scr

    便乗 ゆの in Haskell - blanket log
  • HSDL with GHC 6.6.1 - まめめも

    Haskell の SDL binding である HSDL を GHC 6.6.1 でコンパイルするための手順メモです。 1. 必要なものをダウンロードします。 HSDL のソースコード、SDL のランタイムライブラリと開発ライブラリ (ヘッダとか) が必要です。 http://fxp.hp.infoseek.co.jp/haskell/HSDL/ から HSDL-0.2.0.zip と haSDLis.zip http://www.libsdl.org/ から SDL-1.2.12-win32.zip と SDL-devel-1.2.12-mingw32.tar.gz $ ls HSDL-0.2.0.zip SDL-devel-1.2.12-mingw32.tar.gz SDL-1.2.12-win32.zip haSDLis.zip 2. SDL の開発ライブラリを適当なところに展開

    HSDL with GHC 6.6.1 - まめめも
    youz
    youz 2008/10/01
    GHCでSDLを使う際の手順
  • 注目ワード“高階プログラミング”って何だ? (1/2)

    オープンソースソリューションを扱う技術系企業 タイムインターメディア(以下TIM)が、「HOPプロジェクト」を開始した。HOPとは、Higher-Order Programming=高階プログラミングを略した言葉。HOPプロジェクトは、TIMの高階プログラミングにおける技術力を背景に、技術コンサルなどを行っていくプロジェクトだ。 そもそも高階プログラミングとは何なのか? まず、具体的に使用するツールは、関数型言語と呼ばれる「Haskell」や、「Gauche」、そしてGaucheを使って作られたアプリケーションサーバフレームワークの「Kahua」となる。HOPプロジェクトの推進役であるTIM 山下伸夫氏に、高階プログラミングとは何か? を聞いた。 山下伸夫氏(以下山下氏) Webサービスも何でもそうですが、スクラッチから組むことはありません。フレームワークを使うわけですが、そのフレームワー

    注目ワード“高階プログラミング”って何だ? (1/2)
  • The Haskell 98 Language Report

    Simon Peyton Jones [editor], Microsoft Research, Cambridge Lennart Augustsson, Sandburst Corporation Dave Barton, Intermetrics Brian Boutel, Victoria University of Wellington Warren Burton, Simon Fraser University Joseph Fasel, Los Alamos National Laboratory Kevin Hammond, University of St. Andrews Ralf Hinze, University of Bonn Paul Hudak, Yale University John Hughes, Chalmers University of Techn

  • http://www.mew.org/~kazu/material/2008-haskell.pdf

  • defmacro - Writing A Lisp Interpreter In Haskell

    Introduction A while ago, after what now seems like eternity of flirting with Haskell articles and papers, I finally crossed the boundary between theory and practice and downloaded a Haskell compiler. I decided to do a field evaluation of the language by two means. I was going to solve a problem in a domain that Haskell is known to excel at followed by a real world problem1 that hasn't had much ex

  • Haskell で brainfuck - 言語ゲーム

    ふと思い立って Haskell で brainfuck を書いてみた。そんな事やってる人は沢山いると思うので、一つ制限をつけた。モナドは main 関数の中だけしか使わない。つまり、後は全部副作用なしでやる。 それから、大体の方針を立てた。brainfuck の文法はとても単純なので、もしかしてパーサすらいらないんじゃ無いかと思ったのだけど、ループがある関係上やっぱり最初に構文木を作ったほうがやりやすい。という事でオーソドックスに、ソースコード -> 構文木 -> 実行、と言う順序で進める事にした。 -- Parser data Command = Inc | Dec | Next | Prev | Put | Get | While [Command] deriving (Show, Eq) type Program = [Command] parse :: String -> Prog

    Haskell で brainfuck - 言語ゲーム
  • http://liskell.org/about