タグ

Haskellに関するkutakutatriangleのブックマーク (85)

  • Reddit で振り返る今年の英語圏 Haskell 界隈の話題 - Qiita

    Haskel advent calendar 2023 の1日めの記事です. お仕事も情報系でなく,多忙を言い訳に数年ほとんどコード自体をかけていなかったのですが,最近 e-Gov 法令検索 で公開されている法令XMLを読みたい需要があって久しぶりに Haskell で書いてみたらやはり書きやすく,とても楽しくて改めて感動しました.書きながら自然に思考が整理される感じがよい. Hoogle は変わらぬ使いやすさでモリモリサポートしてくれるし,環境構築も GHCup などが噛み合って随分スムーズで,Haskell Language Server も成熟してきているようです.環境構築については,昨年の Advent Calendar の1日め @mod_poppo さんの記事 などが参考になります. 最近入った言語拡張にも,ちょっとだけコード書く位でも(大規模なあるいは高度なコードじゃなくても

    Reddit で振り返る今年の英語圏 Haskell 界隈の話題 - Qiita
  • Haskell は Rust になれるのか?──2023年の Linear Haskell 体験記

    追記:いくらなんでもあまりにも長いので、配列演算に焦点を絞ってより「Rustっぽさ」の気持ちを強調した姉妹編を書きました。手っ取り早く雰囲気を掴みたい方はこちらもどうぞ。 TL;DR GHC 9.0 から Haskell に入った線型型(Linear Types)の機能を一部割とガッツリ使ってみたので、Linear Haskell の現在の使い心地と将来の展望を報告するよ。 使おうと思えば使える段階にあるけれど、一部バグもあるし、まだ言語機能面で実装が追い付いていない部分もあって、快適に書けるようになるにはもうちょっと掛かるよ。それでも実用しようと思えばできるレベルにあるよ。 RustのようになるにはLinear Constraintsに期待。 更新履歴 2023/12/15 11:45 姉妹編へのリンク追加。 2023/10/01 12:30 線型性を納得してくれない場合の \eta-展

    Haskell は Rust になれるのか?──2023年の Linear Haskell 体験記
  • GHCのIOマネージャの歴史と僕の苦悩 - あどけない話

    これは、Haskell Advent Calendar 2021 の8日目の記事です。 Haskellのコンパイラとして事実上一択となったGHCには、「軽量スレッド」が実装されています。軽量スレッドは、ネイティブスレッドよりも軽量なスレッドで、他の言語では「グリーンスレッド」とも呼ばれています。Haskellerが並行プログラミングをするときは、軽量スレッドを息を吸うかのように使います。 複数の軽量スレッドの入出力を束ねるのが、IOマネージャです。IOマネージャも単なる軽量スレッドであり、OSから入出力のイベントを受け取り、それぞれの軽量スレッドにイベントを通知します。 軽量スレッド(っぽい)機能を提供する他の言語では、GHCのIOマネージャを参考にしているようです。僕はIOマネージャの開発に深く関わっています。この記事ではIOマネージャの歴史をまとめるとともに、主にmacOSでの実装に関

    GHCのIOマネージャの歴史と僕の苦悩 - あどけない話
  • Real World Haskell — Monday Morning Haskell

    Real World HaskellA lot of people think day-to-day tasks like running a web app are difficult or impossible in Haskell! But of course this isn't true! In our Real World Haskell series, we'll take you through a whole slew of libraries that allow you to write a web backend. These libraries use Haskell's features to approach things like database queries and API building in unique ways. Part 1: Databa

    Real World Haskell — Monday Morning Haskell
  • Haskell 解説本 小史 - golden-luckyの日記

    語圏におけるHaskellの解説には、これまで4回の波がありました。 それを思い出しながら、最後に『プログラミングHaskell 第2版』の紹介をします。 第1波 第2波 第3波 第4波 『プログラミングHaskell』が改訂されます 第2版ではプログラミングにおける型の理解が深まると思う ここで買えます 第1波 Haskell解説の1つめの波は、2006年、『入門Haskell』と『ふつうのHaskell』が出版された頃にありました。 このうち、『入門Haskell』は(おそらく)日初のHaskellです。 『入門Haskell』(2006年) 『ふつうのHaskell』(2006年) 『ふつうのHaskell』は、書名だけを見ると「特殊な言語」であるHaskellを「ふつう」に説明しているであるように思えるのですが、実はそうでもなくて、淡々と部品の説明をしていく感じの内容

    Haskell 解説本 小史 - golden-luckyの日記
  • Haskellでフィボナッチ数列 〜Haskellで非実用的なコードを書いて悦に入るのはやめろ〜 - Qiita

    -- 素朴なコード fib :: Int -> Integer fib 0 = 0 fib 1 = 1 fib n = fib (n - 2) + fib (n - 1) 数学的な定義をそのまま書き下した、Haskellらしい美しいコードですね! ……なーんて感想を抱いた人はHaskell初心者です。計算機で動かすコードを「数学的な美しさ」で語ってどうするんですか??? 美しいバラにはトゲがあるように、美しいHaskellコードには罠があります。 この「素朴なコード」は非常に遅く、実用に耐えません。(この素朴なコードの出番があるとしたら「遅いコードの例」としてでしょう) 素朴なコードの問題点 例として、「素朴なコード」で fib 4 を計算してみましょう。 fib 4 = fib 2 + fib 3 = (fib 0 + fib 1) + fib 3 = (0 + fib 1) + fib

    Haskellでフィボナッチ数列 〜Haskellで非実用的なコードを書いて悦に入るのはやめろ〜 - Qiita
  • ElmとPureScript、どっちを選べばいいんだよ - Qiita

    (※アイキャッチ画像は、この記事に関係あるようで関係ないウサギ対ウナギ画像です) アドベントカレンダー『Elm2』の昨日の記事は、ababさんの『Elmで副作用を扱う仕組みCmdがとっても良い理由』でした。副作用のある部分とない部分を分離する「純粋」な言語は、作用を扱うのが面倒くさい言語だと思われがちですが、実は作用を扱うのがとても上手なんですよね。ElmのCmdは、Haskellみたいにモナモナせずにシンプルに作用を扱う方法としてElmがたどり着いた、ひとつの解答であります。 さて、ElmPureScript は、どちらも AltJS にして Haskell の直系の子孫であり、そしてどちらも正格評価でありレコード型のような機能を取り込んでいるなど、共通点の多い言語たちでもあります。このどちらを選べばいいのか、迷っている人もいるのではないでしょうか。そんな方のために、それぞれの特徴

    ElmとPureScript、どっちを選べばいいんだよ - Qiita
  • Rustに入門した

    Rustに入門して2週間くらい経ったぜ TL;DR Rustは普通に便利ないい言語 入門した 入門にあたってはプログラミング言語Rustを読んだ。これの翻訳版ぽい。 読んでRustに対して思ったこと: 読んだやつは古いドキュメントの翻訳版だったようで一部記述が古いっぽかった 構文はシンプルだけど必要なものは揃ってる感 ML風でADTもパターンマッチもあるしtraitもあって言うことナシでしょ 所有権とか借用とかそういう聞いたことあるワードは参照という概念に対するアレっぽい スィー言語を気軽に(unsafe)呼べるのはFFIするとき良さそう 強そう マクロ割と便利そうな雰囲気ある RcとかArcとかCellとかいう便利なものがあるらしい あとBoxはいつ使うんじゃ 参照わかったようでわからない とりあえずスタックとヒープの違いは覚えたぞ 入門書なのに普通にするする読めてしまったし特に難しいこ

  • 作って学ぶBitcoin!ゼロから作るSPVウォレット - Qiita

    Bitcoinはもはや説明する必要がないくらいメジャーな存在になりました。その価格は2017/12/12現在で日円にして200万円を超えており1、技術的な知識を持っていない一般の人でも気軽に手に入れることができるようになりました。技術的な視点からみるとBitcoinそのものというよりもその基礎技術であるブロックチェーンが革命的なものであり単純な仮想通貨にとどまらない応用の可能性を秘めています。例えばEthereumはブロックチェーン上にプログラム(スマートコントラクト)をデプロイして実行できる環境であり、今年の12月にはCryptoKittiesというEthereumブロックチェーン上に実装されたゲームが大人気になりました。Lightning NetworkやPlasmaなどなど技術的な話題に尽きないのが盛り上がりを見せるブロックチェーン界隈の面白いところでありますが、今回はそのブロック

    作って学ぶBitcoin!ゼロから作るSPVウォレット - Qiita
  • 型クラスの歴史を軽くひも解く - Qiita

    現在、型クラスは Haskell のみならず、様々な言語で実装されたり似たようなものが実装されている言語機能です。 そういった風潮にも拘わらず、型クラスはどうにも大仰に捉えられがちに感じます。勿論、Haskell でも当初の仕様に比べると、最新の仕様はややこしいし、GHC の拡張や他機能と組み合わせるともっとややこしいのは事実ですが。 ということで、型クラスとはそもそもどういう motivation で発明、導入されたのか、簡単に調べてみます。 Haskell の型クラスは 1992 年の Haskell 1.2 で導入されました。1.2 のレポートに以下のような記述があるので間違ってないはず(他の言語でより早く実装されてるかもしれないけどそこまで調べてると時間なくなるので見ないふりをする。)。 Haskell is a large and complex language. design

    型クラスの歴史を軽くひも解く - Qiita
  • 教えて! キラキラお兄さん「クソみたいな社会は変えられますか?」

    教えて! キラキラお兄さん「クソみたいな社会は変えられますか?」:プロエンジニアインタビュー(4)(1/4 ページ) 「Haskell」を業務アプリ開発にフル活用する岡和也さんは、「UZUZ」のCTOを務めると同時にソフトウェア開発会社「ARoW」を経営し、さらにフリーランスエンジニアとしても活動する。Haskellにこだわる理由、“複業”エンジニアとして活動する理由を聞いた。 岡和也さんは、既卒、第2新卒向け転職支援サービスを提供する「UZUZ(ウズウズ)」の最高技術責任者(CTO)だ。それなのに「月に2日程度しか出社しない」という自由な働き方で仕事に取り組んでいる。 UZUZのCTO職を務めるのと同時に、ソフトウェア開発会社の「ARoW(アロー)」を経営し、さらにフリーランスエンジニアとしても活動する。得意技として駆使するプログラミング言語は「Haskell」だ。純粋関数型言語とし

    教えて! キラキラお兄さん「クソみたいな社会は変えられますか?」
  • An Interview With Haskell Developer Edward Kmett

    Now this still requires me to find a choice of basis for each vector space, but it just so happens that lenses can provide a canonical choice of such a basis. And the nice thing is I can use typeclasses to share such lenses between different vector spaces. By giving names to the ‘x’ dimension or ‘y’ dimension. I can share those names across 2d and 3d vectors for convenience. I’d originally planned

    An Interview With Haskell Developer Edward Kmett
  • 技術書典にて人生初の同人誌を頒布します! - 趣味はデバッグ……

    技術書典にて人生初の同人誌を頒布します!うおぉぉ!!ドコドコドコ!プワプワー! 『遠回りして学ぶ Yesod 入門(上)』 内容は、入門書程度の内容の Haskell を理解した人がウェブアプリケーションフレームワーク Yesod を使うときに手助けになるような内容です。具体的には次の通り。 ビルドツール Stack 効率のよい文字列の扱い Web Application Interface とは Scotty を使ったウェブアプリ ただ書いてたら最後まで間に合わない気がしてきたので今回は「上巻」ってことで逃げました!これから下巻書かなきゃ。 ペンタブレットを買って表紙も自分で書きました!絵がうまい人ってすごい! いろいろ初めてのことだらけで至らないところもあると思いますが会場にいらしていただければ幸いです。 技術書典 2016年6月25日 土曜日 秋葉原通運会館 A-34 卓 PDF

    技術書典にて人生初の同人誌を頒布します! - 趣味はデバッグ……
  • ラムダの魔法使い ~ 純粋関数型プログラマーの異世界転生

    純粋関数型プログラミング言語、ハスケル(Haskell)を愛するプログラマーの藤沢奈都が飛行機事故で異世界に転生した。そこで魔法の才能に恵まれ、プログラムで魔法を制御する技術を確立することに成功した。そんな中、王都に忍び寄る不気味な影が……。作品を読むうえでハスケルの知識はなくてもよいですが、あればより深く楽しめる内容になっています。ストーリーは格的な異世界ファンタジーです。この小説小説家になろうとカクヨムに投稿しています。 01 2016/07/01 12:00 02 2016/07/02 12:00(改) 03 2016/07/03 12:00 04 2016/07/04 12:00 05 2016/07/05 12:00 06 2016/07/06 21:00 07 2016/07/07 21:00 08 2016/07/08 21:00 09 2016/07/09 21:00

    ラムダの魔法使い ~ 純粋関数型プログラマーの異世界転生
  • Hakaru

    Hakaru Hakaru is a simply-typed probabilistic programming language, designed for easy specification of probabilistic models and inference algorithms. This type of language is useful for the development of machine learning algorithms and stochastic modeling. Hakaru enables the design of modular probabilistic inference programs by providing: A language for representing probabilistic distributions, q

  • GUI Application Development | Stack Builders Blog

    Creating a GUI application in Haskell This time, we’re developing a calculator using bindings to GTK+. This tutorial would be great for Haskell beginners and others who come from an imperative background. This popular post was originally written in 2015 and updated in March 2024 to reflect the process of creating a GUI application from scratch with Haskell and GTK+. This tutorial shows how to buil

    GUI Application Development | Stack Builders Blog
  • Twitterを巡回していてわかったHaskell初心者が躓きやすいポイント8つ

    最近の趣味は「Haskellはいいぞ」と呟くかTwitter Search: Haskellを巡回して を押して回ることです 毎日巡回しているとHaskellに入門しようとするも細かいところに引っかかって前に進めないでいる人をちらほら見かけます。今回はそんな見回りの知見を活かしてHaskell初心者が躓きやすいポイントをまとめてみたいと思います。 1. 入門書は何がいいの? それはもうすごいH一択でしょう!…と言いたいところですが時々不満の声を聞くこともあります。確かにすごいHこと『すごいHaskellたのしく学ぼう!』は世界一わかりやすいHaskell入門書であることは間違いないと思いますが、逆に内容が平易すぎるため記述が冗長だと感じたり読み終わっても何か自分で作れるようになった気がしなかったりするかもしれません。なので僕は「プログラミングも初心者でHaskellから入門してみたい」

    Twitterを巡回していてわかったHaskell初心者が躓きやすいポイント8つ
  • モナドはポケモン。数学が出てこないモナド入門 - Qiita

    仮説:モナドとはポケモンである このテキストは、でんこうせっかの速さでモナドが使えるようになりたいひとのための、真面目なモナド入門です。数学っぽい話はなるべく避けていますし、関数型言語についての知識がなくても読めるように書いています。対象の読者は以下のような人です。 モナドが何なのか知りたい、使いたい Haskellを学ぼうとしたがモナドがわからなくて挫折した モナドを学ぼうとしたら、箱だのブリートだのと変な喩え話をされて余計わからなくなった プログラミングを学ぶつもりが数学の講義が始まったので止めた 最初はモナドは難しいからとGHCiを使わされたが、電卓程度にしかならないので飽きた なお、何故か説明の補助としてポケモンが登場しますが、この記事を読むのに別にポケモンをプレイしたことがある必要はありません。この記事はもしポケモン要素を全部無視したとしてもわかるようになっています。 挿絵があっ

    モナドはポケモン。数学が出てこないモナド入門 - Qiita
  • もうcabal hellは怖くない、Stackを使ってみるよ! - Creatable a => a -> IO b

    はいはいどうも、最近はずっとドラクエやってます。 ちゅーんさんです。 人生ではじめてプレイしたRPGってドラクエ6だった気がします。 スマフォ版で久々にプレイしたのですが、やっぱりアレです。 バーバラちゃん、いいですね。 あ、ひとまずラスボス倒したので、今は3やってます。 ポカパマズさああああああん!!!! はい。 というわけで、 この記事はちゅーんさんがイマドキのHaskellのビルドツールである、 stackを2日くらいぐりぐりいじって覚えた使い方をまとめようと思います。 ざっくりと、stackってどんなもんよ、みたいな話は http://qiita.com/tanakh/items/6866d0f570d0547df026 の前半を読むとだいたいわかりますので、 ここでは実用的な具体例はさておき、とにかく動かしてみたい人に向けて、 「ここに書かれてる通りに色々やったら、なんとなくst

    もうcabal hellは怖くない、Stackを使ってみるよ! - Creatable a => a -> IO b
  • 1から学ぶHaskell: プログラマ向けのHaskell入門

    (工事中 25%) はじめに 純粋関数型言語Haskellを学ぶのは海の向こうの国を知ることだ。 第一級関数、参照透過性、遅延性、静的型付けなどが特徴だ。デザインの美しさを犠牲にすることなく優れた実用性を実現している。 対象 このチュートリアル プログラムを組んだことがあり「関数」「変数」「引数」「返り値」の意味がわかる人が対象だ。 書籍 書籍では以下のかたを、対象にしています。 高校くらいの数学の知識がある 圧縮ファイルの解凍ができる gitが使えれば、なお良い なんらかのエディタが使える コマンドラインが使える 書籍購入の際の注意 「誰でも理解できるように」と心を配って、書いてはいますが、それでも、理解できない人は出てしまいます。 このチュートリアルから派生した書籍は、知識はないけれど、柔軟な知性を持っている人が対象です。 書籍の内容が、1回で理解できなければ、2回読んでください。それ