並び順

ブックマーク数

期間指定

  • から
  • まで

281 - 320 件 / 701件

新着順 人気順

haskellの検索結果281 - 320 件 / 701件

  • 「コンピュータを操る」

    「コンピュータを操る」 浅井 健一 著、 「コンピュータを操る」 プログラミングを通して「情報科学的なものの考え方」を学ぶ サイエンス社、 2020 年 2 月 出版、 Computer and Web Sciences Library 2 各章で作られるゲーム 4章: 白いゲーム画面が出る。 5章: 背景画像と自転車の画像が表示される。 6章: 自転車が左に動く。(ユーザはまだ何もできない。) 7章: 自転車を矢印キーによって動かせるようになる。 8章: 自転車が動けるのは道路上のみになる。 9章: 自転車に積んでいる牛乳、ヨーグルトの量が表示されるようになる。 10章: 一番、左上の配送先に牛乳を届けると数が変化する。 自宅に戻ると牛乳の数が 9 に戻る。 11章: 各配送先に牛乳、ヨーグルトを届けられるようになる。 プログラミング環境 全部で 5.3M ほどあります。 回線が細いと読

    • Security

        Security
      • ElixirとHaskellの根底にある同じもの、そして、Elixirが辿った道

        本当のDXはSF的で未来志向、そしてサイバーパンク【from 総務省 ICT技術セミナー「自分ごとにするDX」】

          ElixirとHaskellの根底にある同じもの、そして、Elixirが辿った道
        • What killed Haskell, could kill Rust, too

          What_killed_Haskell_could_kill_Rust.md At the beginning of 2030, I found this essay in my archives. From what I know today, I think it was very insightful at the moment of writing. And I feel it should be published because it can teach us, Rust developers, how to prevent that sad story from happening again. What killed Haskell, could kill Rust, too What killed Haskell, could kill Rust, too. Why wo

            What killed Haskell, could kill Rust, too
          • Haskellライクな構文をEgisonに実装している話 - momologue

            これは言語実装Advent Calendar 2019の2日目の記事です。 私は少し前から、楽天技術研究所でEgisonの開発アルバイトをしています。入社してから初めての大きなプロジェクトとしてEgisonの構文を新しくするというのを担当しているので、その紹介と、設計/実装で悩んだ(でいる)ことなどを書こうと思います。 Egisonとは Egisonについて聞いたことがないという人はとりあえず公式サイトを見てほしいのですが、概要としては 表現力豊かなパターンマッチ(非線形パターン*1など) (上のパターンマッチを利用して実装された)数式処理システム を強みとし、プログラムや数式を簡潔に記述できることに重きを置いているプログラミング言語です。 これまでEgisonはS式(Lispのようなカッコが多い文法)の構文を持っていましたが、Lispに習熟している人を除く大抵の人にとってはS式はあまり読

              Haskellライクな構文をEgisonに実装している話 - momologue
            • 協調型スケジューリング vs. 先取り型スケジューリング

              この記事はCooperative vs. Preemptive: a quest to maximize concurrency powerの翻訳・意訳記事になっています。 動機 私のチームはJavaを多用しています。システムを構築するために、ウェブサーバやデータベースドライバなど、多くのものに、スレッドを介した同時実行機能を内蔵した、実績のあるオープンソースのJavaライブラリを使用しています。 また、ビジネス特有のロジックを実装する際には、Javaのスレッド化命令を利用して同時実行を実現しています。 しかし、時間が経つにつれ、パフォーマンスの問題が見えてきました。 Javaアプリには合計1万個のスレッドが実行されていたため、ホストのRAMをすべて占有してしまうサービスがありました。 64ビットのJVMのスレッドのスタックサイズが1024バイトであるため、スレッドが1万もあるとスタックだ

                協調型スケジューリング vs. 先取り型スケジューリング
              • Haskellのsomeを正格評価したら無限ループする話 - 星にゃーんのブログ

                パーサコンビネータなんかでよく使う、 some と many という関数があります。それぞれ引数を1回以上/0回以上実行して結果のリストを返す関数で、これの単純な定義は some v = (:) <$> v <*> many v many v = some v <|> pure [] となります。 some は v : (many v) 、 many は some v または [] を返すイメージです。 パーサコンビネータでは、例えば英数字1文字以上の文字列をパースしたいとき some alphaNum と書いたりします。 面白いのは、一見とても自明に思えるこの定義は、遅延評価がないと無限ループしてしまう点です。 本当は v が失敗したら some v 自体が失敗してほしいところが、v が失敗するか否かに関わらず many v が実行されてしまいます。正格評価の気持ちで考えるとあたりまえで

                  Haskellのsomeを正格評価したら無限ループする話 - 星にゃーんのブログ
                • GitHub - zesterer/tao: A statically-typed functional language with generics, typeclasses, sum types, pattern-matching, first-class functions, currying, algebraic effects, associated types, good diagnostics, etc.

                  You can now test Tao in the browser! A statically-typed functional language with polymorphism, typeclasses, generalised algebraic effects, sum types, pattern-matching, first-class functions, currying, good diagnostics, and much more! For more example programs, see... hello.tao: Hello world input.tao: Demonstrates a more complex example of IO effects calc.tao: A CLI calculator, demonstrating parser

                    GitHub - zesterer/tao: A statically-typed functional language with generics, typeclasses, sum types, pattern-matching, first-class functions, currying, algebraic effects, associated types, good diagnostics, etc.
                  • Haskellの最近の乱数生成事情について

                    あらすじ Haskellでの乱数生成ライブラリは長らく群雄割拠の時代が続いていました。 その理由は、公式のrandomパッケージの使い勝手がすこぶる悪かったため、 各々が独自のインターフェースでまともな乱数生成ライブラリを公開していました。 その時代は、random-1.2の登場により終わりを迎えました。 これからはrandomパッケージを使えば基本的に問題ないでしょう。 Before random-1.2 Haskellの公式の乱数生成ライブラリがrandomだったのですが、 このライブラリは System.Randomといういかにも標準的なモジュールを提供している割に使い物になりませんでした。 そのため、 mwc-random tf-random xorshift mersenne-random-pure64 などのライブラリが独自のインターフェースを提供していました。 randomの

                      Haskellの最近の乱数生成事情について
                    • Functorio

                      You might have heard people say that functional programming is more academic, and real engineering is done in imperative style. I’m going to show you that real engineering is functional, and I’m going to illustrate it using a computer game that is designed by engineers for engineers. It’s a simulation game called Factorio, in which you are given resources that you have to explore, build factories

                        Functorio
                      • JSON Parser 100% From Scratch in Haskell (only 111 lines)

                        Twitch: https://www.twitch.tv/tsoding GitHub Repo: https://github.com/tsoding/haskell-json My Haskell Setup: https://www.youtube.com/watch?v=5p2Aq3bRuL0 Unusual video this time. This is a slightly edited recording of my Twitch stream. Initially I planned to make a regular video on this topic, but quickly realized that it's just way too much material for a single regular 10 minutes video. So I dec

                          JSON Parser 100% From Scratch in Haskell (only 111 lines)
                        • Elixir版?②「プログラミングHaskell第2版」 - Qiita

                          fukuoka.ex/kokura.exのpiacereです ご覧いただいて、ありがとうございます 前回に引き続き、「プログラミングHaskell 第2版」の第2章を、Elixirで解釈しつつ、HaskellやElixirのTIPSを追記してみようと思います(本コラムの目次は、書籍の目次を流用しています) 今回は、HaskellやElixirに共通する大きな特徴である「リスト操作」の比較がメインになります 内容が、面白かったり、役に立ったら、「いいね」よろしくお願いします お知らせ:11/10(日)、ElixitとHaskellの登壇します 「関数型プログラミングカンファレンス2019 in Japan」で、本コラムシリーズ+αの内容で、35分の登壇をします Haskellの神様、Edward Kmettさんや、GHC開発者のSimon Peyton Jones(SPJ)さん、Rustの有

                            Elixir版?②「プログラミングHaskell第2版」 - Qiita
                          • Fix関数の教科書 (Haskell) - Qiita

                            fix関数についての解説記事が少なかったので、頑張ってかき集めた情報をまとめておこうと思います。 内容としては、 fix関数 <- 今ココ MonadFixと再帰的do記法 ArrowLoopと再帰的arrow記法 を複数の記事に分けて紹介します。 fix関数なら大体知っているよっていう人は、説明を飛ばして、後ろの練習問題から始めても楽しいと思います。 fix関数の仕組みはいいから、使い方だけ教えて~~っていう人は、fix関数の活用法から始めると幸せかもしれません。 この記事に載せているソースコードは、モジュールのimport文を省いています。なので、実際に手元の環境で動かしてみるときは、次のimport文をソースコードの冒頭に追加して実行してください。 import Control.Monad.Fix -- fix関数をインポート import Control.Monad.State -

                              Fix関数の教科書 (Haskell) - Qiita
                            • recursion-algorithms

                              ██████╗ ███████╗ ██████╗██╗ ██╗██████╗ ███████╗██╗ ██████╗ ███╗ ██╗ ██╔══██╗██╔════╝██╔════╝██║ ██║██╔══██╗██╔════╝██║██╔═══██╗████╗ ██║ ██████╔╝█████╗ ██║ ██║ ██║██████╔╝███████╗██║██║ ██║██╔██╗ ██║ ██╔══██╗██╔══╝ ██║ ██║ ██║██╔══██╗╚════██║██║██║ ██║██║╚██╗██║ ██║ ██║███████╗╚██████╗╚██████╔╝██║ ██║███████║██║╚██████╔╝██║ ╚████║ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═══

                              • 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
                                • とほほのHaskell入門 - とほほのWWW入門

                                  「ハスケル」と呼びます。 数学者・論理学者の Haskell Curry の名前に由来しています。 LISP, ML などの言語の影響を受けています。 関数型プログラミング言語 であり、特に 純粋関数型言語 に分類されます。 金融、セキュリティ、数学・科学解析、構文解析などの分野での利用例があります。 関数型プログラミングに慣れていない人にとっては、多少学習コストが高いようです。 遅延評価 を採用しており、式は記述されていても必要となるまで評価されません。 関数型言語ですが、モナド などを利用することにより、手続き型言語のような記述も可能です。 Haskell 1.0 (1990年)、Haskell 98 (1999年)、Haskell 2010 (2009年) などのバージョンがあります。 コンパイル型言語ですが、スクリプト言語の様にインタプリタで呼び出すこともできます。 処理系は、イン

                                  • Direct-style Effects Explained

                                    Direct-style Effects Explained By Noel Welsh on 24 Apr 2024 Direct-style effects, also known as algebraic effects and effect handlers, are the next big thing in programming languages. At the same time I see some confusion about direct-style effects. In this post I want to address this confusion by explaining the what, the why, and the how of direct-style effects using a Scala 3 implementation as a

                                    • Names are not type safety

                                      Haskell programmers spend a lot of time talking about type safety. The Haskell school of program construction advocates “capturing invariants in the type system” and “making illegal states unrepresentable,” both of which sound like compelling goals, but are rather vague on the techniques used to achieve them. Almost exactly one year ago, I published Parse, Don’t Validate as an initial stab towards

                                      • Parapet - A purely functional library to build distributed and event-driven systems

                                        A purely functional library to build distributed and event-driven systems It's not a secret that writing distributed systems is a challenging task that can be logically broken into two main aspects: implementing distributed algorithms and running them. Parapet plays the role of execution framework for distributed algorithms - it can be viewed as an intermediate layer between a low-level effect lib

                                        • Idris 2の数量的型が解決した問題、導入した問題 | κeenのHappy Hacκing Blog

                                          # Idris2の数量的型が解決した問題導入した問題 ---------------------- [第一回関数型プログラミング(仮)の会 - connpass](https://opt.connpass.com/event/222709/) === # About Me --------- ![κeenのアイコン](/images/kappa2_vest.png) * κeen * [@blackenedgold](https://twitter.com/blackenedgold) * GitHub: [KeenS](https://github.com/KeenS) * GitLab: [blackenedgold](https://gitlab.com/blackenedgold) * [Idein Inc.](https://idein.jp/)のエンジニア * Lisp, ML

                                          • DWARF support in GHC (part 1)

                                            This post is the first of a series examining GHC’s support for DWARF debug information and the tooling that this support enables: Part 1 introduces DWARF debugging information and explains how its generation can be enabled in GHC. Part 2 looks at a DWARF-enabled program in gdb and examines some of the limitations of this style of debug information. Part 3 looks at the backtrace support of GHC’s ru

                                            • gloss で Turtle Graphics - Qiita

                                              Turtle Graphics on Gloss Ver.1.0.0.0 Gloss を使った Turtle Graphics です。 実際のコードは こちらの github にあります。 Gloss については こちら の記事が参考になる と思います。 含まれるファイル app / Main.hs -- 実験用 sample ├ circleDance.hs -- 複数の円を同時に描く ├ dragonCurve.hs -- dragon 曲線を描く ├ kochCurve.hs -- Koch 曲線を描く ├ graph.hs -- 関数のグラフを描く └ star.hs -- 星を描く sample / L-system ├ dragonCurveL.hs -- L-system で dragon 曲線を描く └ kochCurveL.hs -- L-system で Koch 曲線

                                                gloss で Turtle Graphics - Qiita
                                              • 40行でPoisson方程式を解く - Qiita

                                                こんにちは、やきつかです。 Haskellで配列を使ってみたいなーと思っていて、Poisson方程式を数値計算してみたら40行だったので1人で感動しちゃったので残しておきます。 Haskellの表現力の強さを知ってもらえればうれしいです。 注意 とりあえず実装したかったので、処理速度とかは一切考慮してないです。 同じ理由で、精度も可視化していい感じになることを目指しています。 Haskell、数値計算とも初学者なので、間違いとかよりよい作法がありましたら教えていただけると大変うれしいです。 はじめに この記事では、Poisson方程式の概要→差分方程式→アルゴリズム→Haskellで書いたコードという順で説明していきます。 Poisson方程式とは Poisson方程式は二階の偏微分方程式で、次の様に表されるもののことを言います。 $$\Delta\phi=f$$ ここで、$\Delta$

                                                  40行でPoisson方程式を解く - Qiita
                                                • Oath: 安全、高速、合成可能な並行処理 - モナドとわたしとコモナド

                                                  TL;DR github.com 並行処理を簡潔かつ安全に記述できるライブラリを作った。ApplicativeDo拡張を使って、以下のようにoathの引数として与えたIOアクションを同時に実行し、結果を集める処理を書ける。いずれかが例外を投げた場合、残りをキャンセルするためリソースを漏らす心配がない。 evalOath $ do a <- oath $ ... b <- oath $ ... f a b 経緯 Haskellは並行処理が得意とされている。事実、軽量スレッド、MVar、STMといった処理系によるサポートが充実しており、HackageのConcurrencyカテゴリには235ものパッケージがあることからもユーザの関心の高さが窺える。 並行処理を実用する上では、単にスレッドをフォークするだけでなく、計算の結果を集める必要がある──Scalaなどで言うFutureに近いものがあると

                                                    Oath: 安全、高速、合成可能な並行処理 - モナドとわたしとコモナド
                                                  • barbies-thで気軽にHKDを堪能しよう [Haskell AdC 14] - モナドとわたしとコモナド

                                                    ミーハーな読者なら、barbiesというライブラリをご存知の方も多いと思う。そう、HKDを扱う定番ライブラリだ。HKDは、同アドベントカレンダーにも寄稿されている他、Haskell Dayでも紹介された(https://assets.adobe.com/public/b93f214d-58c2-482f-5528-a939d3e83660)注目の技法だ。Higher-Kinded Data (HKD) について - Qiita HKDは、一番簡単な場合であるはずのIdentityを使うと着脱が面倒になるという問題がよく知られている。Data.Barbie.BareモジュールのWearという型族を使って定義すれば、それを簡単にはがせ、普通のレコードと全く同じように使える。 data Barbie t f = Barbie { name :: Wear t f String , age ::

                                                      barbies-thで気軽にHKDを堪能しよう [Haskell AdC 14] - モナドとわたしとコモナド
                                                    • Amazon.co.jp: 圏論入門 Haskellで計算する具体例から: 雪田修一: 本

                                                        Amazon.co.jp: 圏論入門 Haskellで計算する具体例から: 雪田修一: 本
                                                      • https://github.com/github/semantic/blob/master/docs/why-haskell.md

                                                          https://github.com/github/semantic/blob/master/docs/why-haskell.md
                                                        • Lessons learned from writing ShellCheck, GitHub’s now most starred Haskell project – Vidar's Blog

                                                          ShellCheck is a static analysis tool that points out common problems and pitfalls in shell scripts. As of last weekend it appears to have become GitHub’s most starred Haskell repository, after a mention in MIT SIPB’s Writing Safe Shell Scripts guide. While obviously a frivolous metric in a niche category, I like to interpret this as meaning that people are finding ShellCheck as useful as I find Pa

                                                          • extensible effects でやっていくドメインロジック記述 - Qiita

                                                            自己紹介 亀岡 亮太 (Ryota Kameoka) 株式会社HERP リードエンジニア Twitter @ryotakameoka GitHub @ryota-ka ToC ドメインロジックとは なぜドメインロジック記述が重要か? extensible effects ドメインロジックの記述 ドメインロジックの実行 ドメインロジックのテスト 注意事項 スライドのコードはかなり端折ってます 実際の実装は GitHub をご覧ください ToC ドメインロジックとは なぜドメインロジック記述が重要か? extensible effects ドメインロジックの記述 ドメインロジックの実行 ドメインロジックのテスト ドメインロジックとは コドメインロジックの双対 ドメインロジックとは コドメインロジックの双対 ビジネスロジックとも呼ばれる In computer software, busines

                                                              extensible effects でやっていくドメインロジック記述 - Qiita
                                                            • 抽象データ型を自作する - golden-luckyの日記

                                                              昨日の記事では「書籍のマクロな構造」について話しました。 このマクロ構造はPandoc構造には組み込まれていません。 そのため、Pandocで書籍を作ろうと思うと、どうしたってPandoc構造にない部分を扱う別の仕組みが必要になります。 素のPandocでは、「書籍のマクロな構造を扱える外部の仕組み」を託す先として、主にLaTeXを利用しています。 裏を返すと、LaTeXは、書籍のマクロな構造を扱える仕組みです。 それなら最初からPandocではなく、LaTeXで本を作ればいいのではないでしょうか? この反論はもっともです。 実際、本を作るプロは黙ってLaTeXであったり、あるいはInDesignであったり、あるいはFrameMakerであったりを使います。 組版のプロの要求を実現するためには、これらのツールが持つ表現への自由度が必要だからです。 しかし原稿をもらう立場からすると、この高い

                                                                抽象データ型を自作する - golden-luckyの日記
                                                              • オブジェクト指向におけるVisitorパターンは、F代数によるμ再帰を Church encoding したもの

                                                                某所で オブジェクト指向 (OOP) における Visitorパターン について話されていたので、自分の関数型プログラミングのメモ用に整理してみたいと思います。 (Twitterで書くには少し長すぎたので、こちらに整理) 2021/01/10 EDIT: Church (Boehm–Berarducci) エンコーディングとVistorパターンについての具体的な事例は、こちらの記事が分かりやすいので、ご参照ください。 Haskell for all: The visitor pattern is essentially the same thing as Church encoding 概要 OOP における Visitor パターンは、関数型プログラミング的に言えば、(パターンマッチする)F代数によるμ再帰を Church encoding したもの。 つまり、 を関数適用して、結果 a

                                                                  オブジェクト指向におけるVisitorパターンは、F代数によるμ再帰を Church encoding したもの
                                                                • Call Arity と融合変換

                                                                  GHC は,最適化のため Call Arity と呼ばれるコード解析を行っている.この解析で,自由変数が何個引数を持っていいかを判定し,イータ展開を可能にする.リストにおける融合変換とも密接な関係のある解析だ.こいつの存在とどういうことをやっているかはだいたい知っていたんだけど,ちょっと詳しく知りたい事例があったので調べてみた.そのメモ. なお元ネタは,Breitner (nomeata) 先生の Call Arity . イータ展開と最適化 Haskell は知っての通り関数型プログラミング言語なので,息を吐くように関数を第1級として使うし,標準ライブラリに無数の高階関数がある.関数は全てカリー化されていて,部分適用も可能だ.ただ困ったことに Haskell は実用されており,これらの関数型プログラミング言語で常用されているテクニックで書かれたプログラムで,通常のプログラミング言語程度と

                                                                    Call Arity と融合変換
                                                                  • stack で管理されたプロジェクトを cabal でビルドするために

                                                                    Haskell のビルドツールといえば cabal と stack です。ちょっと前までは cabal より stack の方が流行っていたのですが、最近は開発も落ち着いているようであまり動きがありません。それよりも cabal の nix-style local build が非常に使いやすく、近頃では stack から cabal に移行しているプロジェクトも多くあります。 stack を使っていて改善したら良いなぁと思う部分としては、新しい GHC やライブラリをすぐに使おうと思っても LTS や nightly に入っていないため使えなかったり、Backpack が未だに使えなかったりするところでしょうか。 ただ、ビルドの再現性という点においては stack の方が優秀だと思っているので今は両方使っています。(index-state と freeze ファイルを組み合わせれば ca

                                                                    • Haskellの文字列リテラルはGHCでどのようにコンパイルされるか - Qiita

                                                                      Haskellの文字列とは まず、Haskell標準の文字型・文字列型が何であるかを確認しておきます。 Haskell 2010では Char 型はUnicode characterを表す、とされています。 Haskell 2010 Language Report -- 6.1.2 Characters and Strings 「文字」というのが非自明な概念であることを知っている方であればUnicode characterって具体的にはなんやねん!と言いたくなるかと思いますが、GHCにおいては Char 型はUnicodeコードポイントを表します。つまり、 0 以上 0x10FFFF 以下の整数 です。特に、サロゲートコードポイント(0xD800 以上 0xDFFF 以下)も有効な Char 型の値です。 GHC の Char 型の説明 String は Char のリストです。 これらの

                                                                        Haskellの文字列リテラルはGHCでどのようにコンパイルされるか - Qiita
                                                                      • The visitor pattern is essentially the same thing as Church encoding

                                                                        The visitor pattern is essentially the same thing as Church encoding This post explains how the visitor pattern is essentially the same thing as Church encoding (or Böhm-Berarducci encoding). This post also explains how you can usefully employ the visitor pattern / Church encoding / Böhm-Berarducci encoding to expand your programming toolbox. Background Church encoding is named after Alonzo Church

                                                                        • Reanimate

                                                                          Reanimate is: An animation library: Animations are written as code. Written in Haskell: High-level, purely functional, expressive. Based on SVG: Powerful and introspective. Cross-platform: Windows, MacOS, and Linux. Reanimate aims to be a batteries-included way of creating animations and illustrations. It builds on two core ideas: (1) graphics (both still and animated) should be expressed as code,

                                                                          • Pandocフィルター101 - golden-luckyの日記

                                                                            昨日の記事では、PandocのReaderを自分で作り直す話をしました。 いうまでもありませんが、ReaderはPandocの一部なので、改造Readerを使うためにはPandocをソースから自分でビルドする必要があります。 ところがPandocというのは、Haskellで書かれているうえに、かなり巨大で依存関係がめんどくさいソフトウェアです。 GitHubからソースをcloneしてくれば誰でもビルドできるとはいえ、Haskellの開発経験がまったくないと、ビルドできる環境を整えるだけでもなかなか大変でしょう。 Readerを改造するしか手のうちようがない機能追加や修正については何ともなりませんが、Pandoc構造に押し込まれたコンテンツを他の記法として書き出すときに標準とは違うことをしたいだけなら、Pandocをソースからビルドしなくても済むような裏口が昔から用意されています。 それが今

                                                                              Pandocフィルター101 - golden-luckyの日記
                                                                            • すごいHaskell、ハスケル子と学ぼう! - Qiita

                                                                              「すごいHaskellたのしく学ぼう!」という本を読みました。 せっかく関数型言語の本を読んだので、今回は関西型言語を用いて、学んだ内容について綴っていきたいと思います。 ある日、某会社にて ワイ「なぁ、ハスケル子ちゃん」 ワイ「Haskellの記事とか読んでると出てくる、モナドってアレ何なん?」 ハスケル子「型クラスですね」 ワイ「型クラス・・・」 ワイ「ごめん、ぜんぜん分からんわ」 ワイ「型クラスって何・・・?」 ハスケル子「型の分類みたいな感じです」 ハスケル子「classって、分類とか同類って意味を持っているので」 ワイ「型の分類・・・」 ワイ「型自体がそもそも、数値とか文字列とか」 ワイ「そういった分類みたいな感じなのに、それを更に分類すんの・・・?」 ワイ「どどどどういうこと・・・?」 ワイ「舌打ちせんといてや・・・」 Int型とFloat型って似てるよね ハスケル子「えっと、

                                                                                すごいHaskell、ハスケル子と学ぼう! - Qiita
                                                                              • 世界のプログラミング言語(36) 純粋関数型言語Haskellは難しいが学ぶ価値がある言語

                                                                                Haskellは純粋関数型プログラミング言語です。本連載では既にLispやOCamlなどの関数型言語を紹介しましたが、Haskellは関数型言語の中でも特に人気の高い言語です。Stack Overflowの人気言語調査でも2020年は15位、2021年は22位と人気言語がひしめくなか健闘しています。Haskellは難しい言語としても有名ですが、その作法を学ぶならプログラマーの基礎体力の向上に役立つことでしょう。今回はHaskellを試してみよう。 HaskellのWebサイト Haskellとは Haskellは関数型プログラミング言語の一つです。 純粋関数型言語に分類されます。金融やセキュリティ、科学解析、プログラミング言語の開発などの分野で使われています。総じて信頼性が求められる分野の開発で採用されています。そのため、十分実用的な言語と言えます。 しかし、Haskellには「遅延評価」

                                                                                  世界のプログラミング言語(36) 純粋関数型言語Haskellは難しいが学ぶ価値がある言語
                                                                                • 自動printfデバッグ - モナドとわたしとコモナド

                                                                                  関数をデバッグするために、引数と戻り値をそれぞれ表示するというのを誰しもやったことがあると思う。今回はそれを自動化するからくりをHaskellで実装してみる。 目標となるのは、関数が与えられたとき、その引数と結果をターミナルに出力する関数に変換する高階関数、probe :: Traceable a => String -> a -> aである。 testDelay :: Double -> Double -> IO () testDelay dur dur' = threadDelay $ round $ (dur + dur') * 1000000 *Probe> probe "testDelay" testDelay 1 2 testDelay 1.0 2.0: () これは型クラスを活用すればお茶の子さいさいである。以下のように型によって挙動を切り替える関数withTraceData

                                                                                    自動printfデバッグ - モナドとわたしとコモナド