並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 120 件 / 423件

新着順 人気順

haskellの検索結果81 - 120 件 / 423件

  • 継続モナドで立ち向かうローンパターンとEither地獄 - 星にゃーんのブログ

    Haskellでファイルなどのリソースの解放を保証するテクニックとして、ローンパターン(Loan Pattern)がある。withFile :: FilePath -> IOMode -> (Handle -> IO r) -> IO rなどがその例だ。 ローンパターンによる関数を複数使ったプログラムは、無名関数のネストが深くなる。 main = do withFile "src.txt" ReadMode \src -> withFile "dst.txt" WriteMode \dst -> ... この問題には、継続モナドContTを使ったきれいな解決策が知られている。 main = evalContT do src <- ContT $ withFile "src.txt" ReadMode dst <- ContT $ withFile "dst.txt" WriteMode .

      継続モナドで立ち向かうローンパターンとEither地獄 - 星にゃーんのブログ
    • UTF-8のバリデーションとモノイドと半群

      この記事はUTF-8のバリデーションとオートマトンの続きです。 前回はUTF-8のバリデーションが8状態のオートマトン (DFA) で表現できることを見ました。状態と遷移を擬似コードで書けば次のようになるでしょう: -- 8つの状態 data State = START | TAILx1 | TAILx2 | TAILx3 | A | B | C | D -- 入力バイトに応じて次の状態を返す。次の状態が該当しなかったら Nothing を返す next :: Word8 -> State -> Maybe State +----+----+-----+----+ | a0 | a1 | ... | aN | 8ビット整数列 +----+----+-----+----+ | | | v v v +----+----+-----+----+ | m0 | m1 | ... | mN | モノ

        UTF-8のバリデーションとモノイドと半群
      • インターフェースと型クラスの違いを考える

        この記事では、JavaライクなインターフェースとHaskellライクな型クラスを比較します。どちらも、複数の異なる型を統一的に扱うための仕組みです。 インターフェース インターフェースはご存知の方も多いと思いますが、コード例を載せておきます。 // インターフェースの定義 interface Greetable { String greet(); } // 実装の例1 class Hello implements Greetable { String message; Hello(String m) { this.message = m; } public String greet() { return "Hello " + message + "!"; } } // 実装の例2 class Goodbye implements Greetable { public String gree

          インターフェースと型クラスの違いを考える
        • Unification-free ("keyword") type checking

          From my perspective, one of the biggest open problems in implementing programming languages is how to add a type system to the language without significantly complicating the implementation. For example, in my tutorial Fall-from-Grace implementation the type checker logic accounts for over half of the code. In the following lines of code report I’ve highlighted the modules responsible for type-che

            Unification-free ("keyword") type checking
          • Why is Prettier rock solid?

            Why is Prettier rock solid?I've always wondered why Prettier is so good. Yes, it learnt from gofmt what to do (note that gofmt doesn't indent, which is the hard part). Yes, it was announced in a real life conference, which helped get the initial momentum behind it. All that is fine, but what was a bit inexplicable to me is its quality. You might disagree with the defaults (I like them. The only on

            • 私とテストと自動化と - あどけない話

              何度か講演でこの話をしたのだが、気が向いたのでエッセンスを書き下しておこうと思う。 テスト駆動という言葉が流行る前にプログラマとなった私は、当初どのようにテストを書いてよいのか分からなかった。そんなとき、(当時はオーム社で現在はラムダノートの)鹿野さんから「ビューティフルコード」を献本していただいた。分厚い本なので、興味ある章から読んでいった。その一つがアルベルト・サボイア氏が書いた7章「ビューティフル・テスト」だ。 ビューティフルコード (THEORY/IN/PRACTICE) 作者:Brian Kernighan,Jon Bentley,まつもとゆきひろオライリージャパンAmazon この章では、例として二分探索が取り上げられる。二分探索のアイディアが出されたのは1946年だが、バグのない実装ができたのは12年後だという。実際に実装してみると分かるが、ソートされた配列の中に目的の要素が

                私とテストと自動化と - あどけない話
              • GitHub - ambulancja/mariposa: A toy programming language with time travel

                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 - ambulancja/mariposa: A toy programming language with time travel
                • F# ではじめる関数型プログラミング入門 (上巻)

                  .NET ファミリーの関数型プログラミング言語である F# を利用した、全 3 巻構成の関数型プログラミング入門書籍となります。 上巻では F# の基本的な文法などの学習ができます。 なお、この書籍は本編をすべて無料で利用いただけますが、活動を応援いただける場合には最終チャプターをご購入いただけますと嬉しく思います。

                    F# ではじめる関数型プログラミング入門 (上巻)
                  • GitHub - augustss/MicroHs: Haskell implemented with combinators

                    There are two different ways to compile MicroHs: Using GHC. Makefile target bin/gmhs Using the included combinator file and runtime. Makefile target bin/mhs These different ways of compiling need slightly different imports etc. This happens by GHC looking in the ghc/ subdirectory first for any extras/overrides. Compiling MicroHs is really best done using make, but there is also a MicroHs.cabal fil

                      GitHub - augustss/MicroHs: Haskell implemented with combinators
                    • AtCoder ガチ言語 Haskell 🔥

                      Haskell で AtCoder に入門しましょう

                        AtCoder ガチ言語 Haskell 🔥
                      • 2023年にHaskell関連で知ってよかったこと - あどけない話

                        これはHaskell Advent Calendar 2023の19番目の記事です。 フォーマッター 以前、フォーマッターをいくつか試しましたが、どれもイマイチでした。しかし、fourmoluはいけてます。fourmoluは、Ormoluのフォークで、Ormoluが偉大なのでしょう。両方試しましたが、僕はformoluに決めました。 Hackageに上がっているので好きな方法でインストールしてください。 % cabal install fourmolu formoluにHaskellのプログラムを渡すと、整形したプログラムを出力してくれます。ファイルの内容を直接書き換えたいときは、-iオプションを渡します。エディタやIDEと連動できますが、お試しでプロジェクト全体を整形するには、以下のようにするといいでしょう。 % find . -name "*.hs" | xargs fourmolu

                          2023年にHaskell関連で知ってよかったこと - あどけない話
                        • 2023年の Linear Haskell で純粋・並列 FFT を実装する──「Haskell は Rust になれるのか?」補遺

                          この記事は Haskell Advent Calendar 2023 14 日目の記事です[1]。 更新履歴 2023-12-15 並列化のパフォーマンスに関する追記。 2023-12-14 初版公開。 はじめに 先々月、Linear Haskell のまとまりのない記事を書いたところ、思ったよりも反響を頂いてびっくりしました。 ただかなりまとまりのない長文だった結果、「長い」「結局 Rust になれるのかようわからん」といった御叱りを頂きました。本当にすいません……。 冒頭に「RustのようになるにはLinear Constraintsに期待」とか、末尾に「2023年のHaskellはまだ Rust ではないが、近い将来 Rust になれる可能性が大きい」とか書きはしましたが、全体があまりにも長いのでこの結論を見つけ出すのも大変ですし、話題があんまり散漫に過ぎまたので論拠もすごくわかりづ

                            2023年の Linear Haskell で純粋・並列 FFT を実装する──「Haskell は Rust になれるのか?」補遺
                          • AI搭載エディタ「Cursor」にHaskellを書かせてみた

                            これは「Haskell Advent Calendar 2023」13日目の記事です。 日頃、私は趣味としてAIをHaskellで実装することに没頭しています。しかし、今回は少し違ったアプローチを試してみようと思います。逆に、AIにHaskellを使って自ら実装させ、その過程や成果を共有してみたいと考えています。この新たな取り組みがどのような結果を生むのか、一緒に探ってみましょう。 AI搭載エディタ「Cursor」 気を取り直して、今回は最近話題のAI搭載エディタ Cursor を使って実際に動くHaskellのアプリを0から作らせてみたいと思います!Cursorをまだ知らない人は以下の記事がオススメです(僕もまだこれしか読んでません🤫) Cursorのダウンロードとインストール、そしてアカウント登録が完了したらさっそくHaskellを書かせてみたいと思います。 それではレッツ・・・ ゴ

                              AI搭載エディタ「Cursor」にHaskellを書かせてみた
                            • TypeScriptでどこまで「関数型プログラミング」するか ─ 「手続き Haskell」から考察する - 一休.com Developers Blog

                              この記事は 一休.comのカレンダー | Advent Calendar 2023 - Qiita 10日目の記事です。 昨今は Web アプリケーション開発の世界でも、関数型プログラミングのエッセンスを取り入れるような機会が増えてきました。 とはいえ、一つのアプリケーションを 1 から 10 までがっちり関数型プログラミングで構成するというわけではなく、そのように書くこともあればそうでない従来からの手続き的スタイルで書くところもあるというのが現状で、どこまで関数型プログラミング的な手法を取り入れるかその塩梅もまちまちだと思います。まだ今はその過渡期という印象も受けます。 本稿ではこの辺りを少々考察してみたいと思います。 先日、Qiita Conference 2023 Autumn で以下のテーマで発表を行いました。 この発表では「関数型プログラミング最強!」という話をしたわけではなく、

                                TypeScriptでどこまで「関数型プログラミング」するか ─ 「手続き Haskell」から考察する - 一休.com Developers Blog
                              • Haskellのzip関数を一般化すると何になるか

                                この記事は Haskell Advent Calendar 2023 の7日目の記事です。 zip関数について Haskellには zip 関数というものがあります。この関数は、2つのリストを受け取って、それぞれから取り出した要素を組にしたリストを返します。

                                  Haskellのzip関数を一般化すると何になるか
                                • 四元数ニューラルネットワークとGHR微積分

                                  これは「FOLIO Advent Calendar 2023」6日目の記事です。 ニューラルネットワークで取り扱う数値を実数とは異なる数に拡張することは、機械学習や計算科学の発展における魅力的な課題の一つです。実数を用いた数値表現は多くのタスクにおいて十分な結果をもたらしてきましたが、新たな数値体系を導入することで、今までとは異なる問題が解決できるようになったり実数では見られなかった新たな現象が起こる可能性に期待することができるでしょう。例えば数値が取れる値を±1に制限したBinalized Neural Networksはハードウェアとの相性が良くメモリ効率の良い実装が可能であったり、拡大実数\bar{\mathbb R}={\mathbb R}\cup\{-\infty,\infty\}を用いた5層のReLUネットワークには任意の深さのReLUネットワークを埋め込むことができたりします

                                    四元数ニューラルネットワークとGHR微積分
                                  • Haskell の Array

                                    Haskellのカレンダー | Advent Calendar 2023 - Qiita 3日目の記事です。 Haskell の Array (配列) について書こうと思います。Haskell の Array は索引が型クラスの Ix で抽象化されているため、特に配列の次元を拡張する際に柔軟性がありとても便利です。 そんな便利な Array ですが、もともと Haskell はリスト操作が強力ということもあってか、既存の参考書をみても Array の解説はほんの少しにとどまっているか、解説がないことがほとんどです。 Array が必要になる場面の多くは「リストだと !! によるインデックスアクセスで O(n) になってしまい間に合わない」という場面が多いと思います。しかし Haskell にはインデックスアクセスが O(1) の Vector (vector: Efficient Arra

                                      Haskell の Array
                                    • Haskellで、手軽にプロパティベーステスト

                                      はじめに Haskell Advent Calender 2023の2日めの記事です。カレンダーの枠が空いていたので、久しぶりに勢いで書いてみました。 さて、ラムダノート社から「実践プロパティベーステスト」が出版されたので、巷ではプロパティベーステストが流行っていることでしょう (紹介宣伝です)。 Haskellでは、プロパティベーステスト用のライブラリとして、例えばQuickCheckがあります。 この記事では、Haskellではソースコードのコメント中に簡単な記述をするだけで、プロパティベーステストを手軽に実行できることを改めて紹介します。 本格的なコードを開発している局面だけではなく、ちょっと頭の中を整理したい時などにも手軽で便利です。 (前準備) テストケースと期待値によるテスト Haskellでは、ソースコードのコメント中に埋め込まれたテストケースを実行できるdoctestという

                                        Haskellで、手軽にプロパティベーステスト
                                      • Reddit で振り返る今年の英語圏 Haskell 界隈の話題 - Qiita

                                        Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Haskel advent calendar 2023 の1日めの記事です. お仕事も情報系でなく,多忙を言い訳に数年ほとんどコード自体をかけていなかったのですが,最近 e-Gov 法令検索 で公開されている法令XMLを読みたい需要があって久しぶりに Haskell で書いてみたらやはり書きやすく,とても楽しくて改めて感動しました.書きながら自然に思考が整理される感じがよい. Hoogle は変わらぬ使いやすさでモリモリサポートしてくれるし,環境構築も GHCup などが噛み合って随分スムーズで,Haskell Language Ser

                                          Reddit で振り返る今年の英語圏 Haskell 界隈の話題 - Qiita
                                        • F# 8 のリリースで F# が最強の言語になってしまった件 - Qiita

                                          おはようございます. 遅ればせながら,11/14/2023 の .NET 8 のリリースの内容を確認し,コードジェネレータの新しい最適化機構(PGO)のデフォルト有効化や AI/LLM のアプリケーションへの統合,各フレームワークのアップデートや,C# の方ではコレクション記法の統合など様々なトピックがある中で,付随してリリースされた F# 8 についても新機能をチェックしてみました. ヤバすぎました. 私は涙しました.これまであらゆる F#er が望んでも得られなかったものがそこにはありました.F# という言語がこれまでの不満点を一気に払拭し,至高の領域に到達しようというヤバみを感じるリリースだったので,今回は以下のブログポストに記載されている新機能から個人的に凄いと思ったものを抜粋して解説します. 11/24/2023 一部サンプルコードのミスを修正しました. F# および F# 8

                                            F# 8 のリリースで F# が最強の言語になってしまった件 - Qiita
                                          • 関数型プログラミング言語"Clojure"が「私たち」と「あなた」にもたらすもの | 株式会社AGE technologies

                                            こんにちは、株式会社AGE technologies CTOの黒川です。 この記事では、私たちがシステム開発のほとんど全ての場面で使用しているClojure(クロージャー)という言語について紹介します。大きく下記の3点をトピックとして、弊社のテクノロジースタックに理解を深めていただくことを目指します。 なぜClojureを選定したのか / Clojureが「私たち」にもたらすものClojureが「あなた」にもたらすもの未経験のチームメンバーがどうやって適応していったか前提私は、現代のシステム開発のユースケースにおいて、特定の言語でなければ実現できない機能はほとんど存在しないと考えています。とはいえ、「じゃあCOBOLでもいいよね」といった極論は必ずしもベターな解決方法ではなく、選定する技術に応じたトレードオフは理解しておく必要があります。 この前提に基づいて、本記事では私たちの技術スタック

                                              関数型プログラミング言語"Clojure"が「私たち」と「あなた」にもたらすもの | 株式会社AGE technologies
                                            • A Fistful of Automata

                                              20 October 2023 Recently, I have been brushing up my knowledge of Formal Languages and stumbled again into the many different faces of finite automata. Most materials present DFAs, NFAs and company as distinct beasts, each with their own properties and theorems. Nevertheless, I couldn’t get out of my mind that all definitions seemed too similar. After hitting my head into a couple walls, I finally

                                                A Fistful of Automata
                                              • 関数型プログラミングと型システムのメンタルモデル

                                                Qiita Conference 2023 Autumun での発表資料です 発表時間の見積もりが下手で後半全然説明できませんでした、すみません! 実際のプロダクト開発ではどうすればいいのか? というケースは以下のスライドを参照してください。 (本スライドは、こちらのプロダクト開発の経験を…

                                                  関数型プログラミングと型システムのメンタルモデル
                                                • λm.me - An alternative frontend for Haskell?

                                                  In CppCon 2022, Herb Sutter gave a talk titled Can C++ be 10x Simpler & Safer? where he described an alterntive syntax that compiles to C++ (which he calls CppFront or Cpp2) that could remove much of the existing issues with C++ - reduce complexity, increase safety, and more. If you haven't seen it yet, it's worth a watch! With recent events and discussions in the Haskell community, my mind went b

                                                    λm.me - An alternative frontend for Haskell?
                                                  • unsafePerformIOではじめる愉快なHaskellプログラミング

                                                    Haskellは「入出力のためにIOモナドを使う必要があるので難しい」というイメージを持たれがちです[要出典]。この記事ではそのイメージに異を唱えることを目指します。すなわち、モナドを使わずに入出力を含むプログラミングをやってみます。 と言っても、Haskell標準の入出力関数には IO 型がついていることに変わりはありません。ですが、 unsafePerformIO という魔法の関数を使うと、IO 型を外して値を取り出すことができるのです。この記事ではこれを最大限活用します。 module System.IO.Unsafe where -- 魔法の関数 unsafePerformIO :: IO a -> a

                                                      unsafePerformIOではじめる愉快なHaskellプログラミング
                                                    • C#でエラー処理を実装するときにEither型を作ったら良い感じになった

                                                      要約 処理に失敗したことをメソッドの呼び出し元に通知するのに例外を使いたくなかった とはいえTupleでエラーオブジェクトを返すのもなんか取り回しが悪い そこで「2つの型のどちらかが設定されている」を保証するEither型を実装したらめちゃくちゃ書きやすくなった 背景 おそらくC#において「メソッドの処理が失敗した」ことを呼び出し元に通知する一番メジャーな方法は例外オブジェクトを投げる方法だと思います(標準ライブラリの多くがそうやってエラーを通知しています)。 しかし例外を投げるように実装すると、例外は分岐が見えにくく追いかけるのが面倒だし、呼び出し側でtry~catchをいちいち書くのが面倒だし、キャッチが漏れた例外がそのまま上に突き抜けたりとか、色々な問題を孕んでいます。 また、メソッドが例外を投げることがメソッドのシグネチャで表現されないので、あるメソッドを呼び出したときに例外をキャ

                                                        C#でエラー処理を実装するときにEither型を作ったら良い感じになった
                                                      • 『なっとく!関数型プログラミング』はScalaで説明されている本だけど読んだらHaskellのdoもわかるようになった - 技術と労働のダイアリー

                                                        関数型プログラミング言語については、以前にHaskellの本を読んでみたりして、興味はあったのだが正直あまり理解できてなかった。 『なっとく!関数型プログラミング』はScalaのコードで関数型プログラミングを説明している本だ。最近邦訳が発売されて話題になっていたので買って読んでみた。 www.seshop.com この本で入れ子のflatMap の説明から、Scalaの for 内包表記 を説明しているところを読んで、Haskell の do もこれかということに気がついた。 リストの場合 // 入れ子のflatMap val result = List(1, 2).flatMap { x => List(10, 20).flatMap { y => List(100, 200).map { z => x + y + z } } } // for内包表記 val result2 = for

                                                          『なっとく!関数型プログラミング』はScalaで説明されている本だけど読んだらHaskellのdoもわかるようになった - 技術と労働のダイアリー
                                                        • 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 体験記
                                                          • NeoHaskell

                                                            NeoHaskell is a dialect of Haskell that is focused on newcomer-friendliness and productivity. It is designed to be easy to learn and use, while also being powerful enough to release your app with minimum effort and maximum confidence.

                                                              NeoHaskell
                                                            • me/007-My-Thoughts-on-OCaml-vs-Haskell-Rust-2023.md at master · sidkshatriya/me

                                                              Recently, osa1's My Thoughts on OCaml generated quite a robust conversation on Hacker News. Overall I felt the blog post was a bit too critical about OCaml. However, everyone has a right to their opinions and I respect whatever has been written. Except for a couple of points, the article didn't resonate with me, so I thought I should pen down my good/bad experiences with OCaml and see if others ha

                                                                me/007-My-Thoughts-on-OCaml-vs-Haskell-Rust-2023.md at master · sidkshatriya/me
                                                              • Leaving Haskell behind

                                                                For almost a complete decade—starting with discovering Haskell in about 2009 and right up until switching to a job where I used primarily Ruby and C++ in about 2019—I would have called myself first and foremost a Haskell programmer. Not necessarily a dogmatic Haskeller! I was—and still am—proudly a polyglot who bounces between languages depending on the needs of the project. However, Haskell was m

                                                                  Leaving Haskell behind
                                                                • Compile-time type-checked truth tables

                                                                  With simple and easy-to-understand examples in F# and Haskell. Eve Ragins recently published an article called Why you should use truth tables in your job. It's a good article. You should read it. In it, she outlines how creating a Truth Table can help you smoke out edge cases or unclear requirements. I agree, and it also beautifully explains why I find algebraic data types so useful. With languag

                                                                    Compile-time type-checked truth tables
                                                                  • GitHub - IBM/fp-go: functional programming library for golang

                                                                    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 - IBM/fp-go: functional programming library for golang
                                                                    • Haskellプロジェクトのベストプラクティス

                                                                      Haskellプロジェクトの「良い習慣」と考えられるやつをまとめてみます。あくまで私の個人的な意見です。 プロジェクト固有のPrelude Prelude に相当するモジュールをプロジェクト独自に持っておくと便利ではないか、という話をします。代替Preludeの話ではありません。 プロジェクト固有のPreludeがあると便利な理由 理由の一つは、標準 Prelude の変化です。直近では次のような変化がありました: GHC 9.4: ~ 型演算子が追加(これまでは構文だった) GHC 9.6: liftA2 が追加 GHC 9.10(見込み): foldl' が追加 もっと昔に遡ると、Semigroup((<>)) が増えるやつなどがありました。 この帰結として、 新しいGHCで名前の衝突が起きやすくなる 新しいGHCで「冗長なインポート」の警告が出やすくなる ことが言えます。これらの問題

                                                                        Haskellプロジェクトのベストプラクティス
                                                                      • 自作言語の紹介と関数型言語の実装方法の検討

                                                                        はじめに 私が個人で昨年の 6 月ごろから開発している関数型プログラミング言語を紹介する。言語の名前は「Plato」である。 この言語は昨年の U22 プログラミングコンテスト最終発表会でも発表した。コンテスト後、コンパイラの構成と実装に関して調査し直して、コードを一から書き直した。コンパイラは Haskell で書かれているため、本稿の内容も Haskell の知識をベースとしている。また、型理論の知識もある程度求められる。ただ、大雑把に書いているため、大雑把に読めばよく、このブログの読解に正確さは必要無い。 このブログでは、まず Plato のチュートリアルを示し、実際に何ができるのかを説明する。次に型検査や中間言語の仕様などコンパイラの実装手法を大まかに説明する。最後に今後実現したい機能などについて述べる。理論的に面白いものや有用な機能については、後日それ専用の記事を書く予定。 チュ

                                                                          自作言語の紹介と関数型言語の実装方法の検討
                                                                        • 『なっとく!関数型プログラミング』は読者の理解度の進捗を先読みして作り込まれた”プログラミング入門”の良書 - Magnolia Tech

                                                                          なっとく!関数型プログラミング 作者:Michał Płachta翔泳社Amazon 良い、買おう、読もう、(コードを)書こう、以上! めっちゃ良いですよ、この本 中盤のプリミティブじゃやりづらい→直積→直和→二つ合わせてADT→値を取り出すためのパターンマッチの解説の流れの疾走感がいいですね— magnoliak🍧 (@magnolia_k_) 2023年8月6日 『なっとく!関数型プログラミング』は、2022年に出版された『Grokking Functional Programming』の邦訳版で、主にScalaを題材として関数型プログラミングを学んでいくための入門書("Grokking"は、完全に理解する、という意味)。あくまで関数型プログラミングの考え方、コードの書き方、良い設計の指針の解説が主眼に置かれているので、Scalaの言語機能の入門書ではない。Scalaの言語仕様を網羅

                                                                            『なっとく!関数型プログラミング』は読者の理解度の進捗を先読みして作り込まれた”プログラミング入門”の良書 - Magnolia Tech
                                                                          • HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita

                                                                            はじめに ここ1年ぐらいかけて、Fixという名前のプログラミング言語を作っています。 コアとなる機能の実装がある程度落ち着き、実際にFixを使ってプログラムを書けるようになってきたので、そろそろ言語の紹介をしてみようと思います。 本記事はFixのチュートリアルではなく、どういう思想で設計されていて、どういう特徴を持つ言語なのか、という点を紹介するものです。 意見・提案・助言などをいただけるとうれしいです。 リポジトリはこちらです。 ※ コメントやコミットメッセージは一応拙い英語で書いていますが、日本語でissueを立てたりdiscordで意見・質問してもらっても大丈夫です。 ※ 急いで作った部分もあるため、コンパイラのコードは結構汚いです。ご容赦ください。 現状、Fixをローカルで実行するためにはLLVMのインストールが必要で時間がかかりますが、Fix playgroundを使えばブラウザ

                                                                              HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita
                                                                            • From fp-ts to effect-ts: How to guide | Sandro Maglione

                                                                              I have been using fp-ts in all of my projects for years now. In the second half of 2022 I was constantly checking Twitter for updates on the release of fp-ts v3. Meanwhile, another library for "functional programming", Effect, was spearheading the advancement of what is possible with typescript. Then, early this year, the communities behind fp-ts and Effect decided to join forces: no more fp-ts v3

                                                                                From fp-ts to effect-ts: How to guide | Sandro Maglione
                                                                              • Asterius から GHC WebAssembly バックエンドに移行した話 - Qiita

                                                                                はじめに 趣味で作っているアプリケーションを Haskell で書いていて、これをブラウザで動かせるようにしたいというのがありました。 そこで、 Haskell で書いたコードを、WebAssembly にコンパイルすることでブラウザ上で呼び出せるようにする そのための諸々の手順を GitHub Actions で自動化しつつ GitHub Pages にデプロイする というのをやるために、かつて Asterius という Haskell → WebAssembly コンパイラを使っていたのですが、最近これが GHC 本体にマージされたという話があり、移行することにしました。 Asterius とは Haskell から WebAssembly へのコンパイラです。 Asterius を動かしてみた人の情報としては、以下が詳しいと思います。 AsteriusでHaskellの関数をJSから

                                                                                  Asterius から GHC WebAssembly バックエンドに移行した話 - Qiita
                                                                                • About this book - Learn Haskell by building a blog generator

                                                                                  About this book Looking for reviews and mentions? Click here. In this book, we will implement a simple static blog generator in Haskell, converting documents written in our own custom markup language to HTML. We will: Implement a tiny HTML printer library Define and parse our own custom markup language Read files and glue things together Add command line arguments parsing Write tests and documenta

                                                                                    About this book - Learn Haskell by building a blog generator