Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

Haskellに関するpoad1010のブックマーク (28)

  • Haskell: A Great Procedural Language

    There are many catchphrases about Haskell. Haskell is useless. Haskell aims to avoid success at all costs. Haskell is the best procedural language in the world. These sound like dismissals or absurdities from the outside, but once you learn what they really mean, they take on a new light. In this article, I want to explain the third. (See the appendix if you are curious about the first two.) This

    poad1010
    poad1010 2025/01/20
    この記事をおすすめしました
  • Rust使用者がHaskellを学んだ感想 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? Rustは多くの言語に影響を受けており、C++のほか、OCamlやHaskellといった関数型言語の影響も受けています (参考: The Rust Reference - Influences)。 私はC++からRustに入りましたが、関数型言語を使った経験はありません。せっかくRustを学んだのだから、その影響元である関数型言語についても学んでみたいと思いました。 関数型言語を学ぶならHaskellだろうということで、以下の書籍を参考に触れてみました。その感想を記します。 参考書: プログラミングHaskell 第2版 (出版: ラム

    Rust使用者がHaskellを学んだ感想 - Qiita
    poad1010
    poad1010 2024/12/23
    この記事をおすすめしました
  • TypeScript の Discriminated Union と Haskell の代数的データ型 - 一休.com Developers Blog

    この記事は 一休.com Advent Calendar 2024 の15日目の記事です。 予定より早く書き上げてしまったので、フライングですが公開してしまいます。 TypeScript の Discriminated Union (判別可能な Union 型) を使うと、いわゆる「代数的データ型」のユースケースを模倣することができます。一休のような予約システム開発においては「ありえない状態を表現しない」方針で型を宣言するためによく利用されています。 「あり得ない状態を表現しない」という型宣言の方針については以下の URL が参考になります。 Designing with types: Making illegal states unrepresentable | F# for fun and profit このユースケースで Discriminated Union を使う場合、それは文字

    TypeScript の Discriminated Union と Haskell の代数的データ型 - 一休.com Developers Blog
    poad1010
    poad1010 2024/12/13
    この記事をおすすめしました
  • TypeScriptでどこまで「関数型プログラミング」するか ─ 「手続き Haskell」から考察する - 一休.com Developers Blog

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

    TypeScriptでどこまで「関数型プログラミング」するか ─ 「手続き Haskell」から考察する - 一休.com Developers Blog
  • HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita

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

    HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita
  • ROT13をHaskell,Go,Rustで実装する - Qiita

    概要 腕試しにHaskellでROT13を実装してみた。 (GoRustは以前に書いたものでこの記事としてはおまけです) 次の点を意識しています。 論理的に理解しやすいことが優先で、処理をまとめすぎない 数学的な思考を優先する ($ を使って写像の合成を意識するぐらいですが) 指針 大まかに次の指針がある。 ローテーションの境界で場合分けする a-m, n-z, A-M, N-Z で場合分けする(modは使わない) mod を使う a-z, A-Z で場合分けし、ローテーションは mod を使って計算する ROT13 の変換テーブルを用意する 今回は、1つ目のが多分一番理解しやすく、2つ目が自然な定式化で簡潔、3つ目がHaskell心をくすぐる書き方ができる…といった感じです。 解1: ローテーションの境界で場合分けする a-m/n-z と A-M/N-Z で符号が変わるという知識をもと

    ROT13をHaskell,Go,Rustで実装する - Qiita
  • 世界のプログラミング言語(36) 純粋関数型言語Haskellは難しいが学ぶ価値がある言語

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

    世界のプログラミング言語(36) 純粋関数型言語Haskellは難しいが学ぶ価値がある言語
  • Haskellで超簡単にシングルバイナリを作る - Qiita

    はじめに Haskellをローカル開発環境で勉強していろいろな抽象的な知識を得たものの、実際活用するにあたってデプロイとかその辺どうするんだろう?やっぱりdocker使って簡単にやりたいな〜 でも、Goとかだと簡単に100%静的なシングルバイナリになるし、Rustとかもmuslを利用していい感じに行けそうだけどHaskellだとわからない>< というお気持ちが強かったので、簡単にデプロイできる100%静的リンクのシングルバイナリ作るぞ!と思って調べたお話です。 追記 下記の紹介しているものとほぼ同じような手順で、自分で拡張しやすいDockerfileでのみ構築されたDockerイメージを自分で作成したので、是非参考にしてみてください。 GitHub Docker Hub 対象読者 Haskellを番で使ったことない人向け 大雑把に説明 概要 静的リンクされたバイナリを作るためのDocke

    Haskellで超簡単にシングルバイナリを作る - Qiita
  • Implementing HTTP/3 in Haskell - あどけない話

    Mew.org is now speaking HTTP/3 (HTTP/2 over QUIC). If you gain access to the site using Firefox Nightly, the first connection would be HTTP/2 then the following connections should be HTTP/3 led by Alt-Svc:. Firefox Nightly This article explains insights which I found through the implementation activities of QUIC and HTTP/3 in Haskell. HTTP/2 server library I started implementing QUIC in January 20

    Implementing HTTP/3 in Haskell - あどけない話
  • HaskellのIOは他の言語でいうところの関数オブジェクトとよく似てるよ、という話 :: Igreque -> Info

    HaskellのIOは他の言語でいうところの関数オブジェクトとよく似てるよ、という話 by Yuji Yamamoto on January 28, 2017 HaskellのIOは奇妙です。 「純粋な関数だけでプログラムが書けるの?」と多くの方が疑問に思うように、実際のところ、副作用のある操作(入出力。ファイルの読み書きやネットワーク通信など)をしなければ、役に立つプログラムは一切書けません。 Haskellではそのものズバリ「IO」という機能を使ってそれを実現します。 しかし一方でHaskellは「純粋」なので副作用が一切ない、とも言われます(例えばWikipediaのこの辺の説明)。 その辺のややこしい問題について、かの「プログラミングHaskell」の訳者、山和彦さんの記事では、下記のように解説されていました(原文のままコピペしています)。 Haskell の IO では、評価と

  • 入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    タイトルに「入門的ではない」と入れたのは; 先日の「関数型プログラミングとオブジェクト指向について、何か書く、かも」において、「型クラス入門」の記事を書くかもと予告じみたことを言ってしまったので、その入門じゃないぞ、と。でも、型クラスの話だぞ、と。そういう意味合いです。ヨロシク、アシカラズ。 型クラスの元祖はHaskellです。なので、「型クラス = Haskellの型クラス」という前提での解説が多いみたいです。しかし、元祖は“最初の試み”であるがゆえに、使用経験や後発の理論を活かすことが出来ず、むしろ問題をかかえていたりします。Haskellの型クラスも、なんだか残念なところが。 内容: オーバーロードと人生 型クラスは何がうれしいのか(オーバーロードなしでも) 型クラスの実際 記号の乱用の実装法 Haskellの型クラスは何がマズイのか オーバーロードと人生 型クラス誕生の動機は、演算

    入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • なぜ型ファーストで考えるのか - 貳佰伍拾陸夜日記

    How do you imagine a building? You consciously create each aspect, puzzling over it in stages. Inception 型なし言語に馴染みはあるものの型付言語をいざ使ってみたらどういう気持ちで書いたらいいのかわからなかったと同僚から相談があり, それをきっかけにして社内の勉強会で以下の話をしました. よく型なし vs. 型付の文脈では「型を書くのは面倒だ」「安全の方が大事だ」「でも面倒だ」「それは型推論を前提にしていないからだ」などの議論になりがちな気がしますが、これはあくまで「計算ありきの型」を考えているからで, 「型ありきの計算」だと全く見え方が違います. 「型はある種の仕様」とおもえば, 型ファーストであることと, 型なし言語でテスト駆動開発(TDD)するときに最初にテストを書くこととは, 同じ

    なぜ型ファーストで考えるのか - 貳佰伍拾陸夜日記
  • 好きで打ち込めることを探すこと――ちょまど氏のキャリアを形成した「オタ駆動開発」とは【Developers Boost 2019】

    2019年11月30日、翔泳社主催の若手エンジニア向けカンファレンス「Developers Boost(デブスト)~U30エンジニアの登竜門~」が開催された。基調講演では、マイクロソフトのCloud Developer Advocateで「ちょまど」こと、千代田まどか氏が登壇。30歳以下(U30)の若手エンジニアに向け、「これが私の戦い方」をテーマに自身のキャリアを語り、若手エンジニアの成長と交流をブーストした。 マイクロソフト Cloud Developer Advocate 千代田まどか(ちょまど)氏 「推し」には時間・労力・お金を惜しまず、全力を注ぐ マイクロソフトでCloud Developer Advocate(クラウド デベロッパー アドボケイト)として、国内・海外で多数の講演をこなし、「Developers Summit 2017」ではベストスピーカー賞 総合第1位を獲得して

    好きで打ち込めることを探すこと――ちょまど氏のキャリアを形成した「オタ駆動開発」とは【Developers Boost 2019】
  • 本当はこわいMySQLプロトコル - tmtms のメモ

    11/28 に Haskell で MySQL の Xプロトコルを実装したという話が聴ける Club MySQL というイベントがあったので参加してきました。 clubmysql.connpass.com MySQLのプロトコルの話ということで、平日の夜とは言え東京で参加者9人(発表者含む)というマニアックな集まりでした。 自分も1年前に RubyMySQL Xプロトコルを実装していたのですが、このツイートを最後に中断していたのでした。 MySQL X Protocol で Collection の追加はできるようになったが、検索がめんどくさい。条件文字列のパースはクライアントで行う必要があるんだな。— とみたまさひろ💎🐬 (@tmtms) 2017年2月20日 今回話を聞いて、無理に謎条件式文字列をパースするんじゃなくて、処理系で書きやすいように書けばいいんだという方式に目から

    本当はこわいMySQLプロトコル - tmtms のメモ
  • Haskell書いてるときになんとなく気をつけていること - LugendrePublic

    信頼性はない 都市伝説かもしれん 大体枕詞に特別な理由がなければがつく 思いついたら徐々に更新する それは違うよってことがあったら @Lugendre まで ghc 8.6.5の話(8.8.1は仕事で使ってなくてな......) コンパイル通るかの確認だけなら最適化オプションO0でコンパイルする stackでいうとstack build --fast 動かすときはO2ビルドしたほうがいいが,インライン展開に5億年消費する なんならこのくらいは静的解析に任せてもいいが,でかいプロジェクトだと一定時間動いてハングアップするのしか世の中にないのでオワリ VSCode のせい説もある ghcideに期待 haskell-language-serverがすべてを解決した CIするときは必ずキャッシュする 毎回一から依存関係やGHCのビルドが走って余裕で1時間超えるようになるので データ構造のフィール

    Haskell書いてるときになんとなく気をつけていること - LugendrePublic
  • 2019 年のスライド一挙公開、あるいは 2020 年の方針 - チェシャ猫の消滅定理

    あけましておめでとうございます。2019 年は大変お世話になりました。2020 年も張り切っていきましょう。 さて、2019 年には結構な回数の外部発表を行いました。これらの発表内容のうち一部は単独のブログ記事としてまとめてありますが、機を逸してしまって記事化されていないものも相当数あります。そこで記事では、2019 年中に行った発表を一覧としてまとめてみました。 2019 年の活動実績 2019 年の登壇は全部で 19 件でした。うち(先着や抽選ではなく)CFP に応募して採択されたものは 4 件です。 チェシャが普段活動している領域は、Twitter の Bio にも書いてある通り、大きく「Kubernetes」「Haskell」「形式手法」の三つのカテゴリに分かれています。このカテゴリで登壇内容を分類したところ、以下のようになりました。 CloudNative に関わるもの(12

    2019 年のスライド一挙公開、あるいは 2020 年の方針 - チェシャ猫の消滅定理
  • 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
  • sight 次世代を生み出すテクノロジーの視点 - Si-ght.jpにようこそ。

    sight 次世代を生み出すテクノロジーの視点 - Si-ght.jpにようこそ。
  • Elixir版?①「プログラミングHaskell第2版」 - Qiita

    fukuoka.ex/kokura.exのpiacereです ご覧いただいて、ありがとうございます 先日9/7(土)に開催した、「ElixirConf JP 2019」の準備・運営にかかりきりで、約3ヶ月弱ぶりの投稿です(ElixirConf JP 2019のレビューは追ってまとめます) さて最近、Haskellerの方々と、ご一緒することが、ちょくちょくあります ご存知の方は、ご存知ですが、元々、私の関数型初体験は、Haskellでした … それから幾つものプログラミング言語を経由して、現在、Elixirに落ち着いており、恐らく、Elixir以外の言語を選ぶことは、よほどのことが無い限り、無いと思います とはいえ、言語ヲタとして、他言語に学ぶことは多くあり、今回は、先月出たばかりの「プログラミングHaskell 第2版」の第1章を、Elixirで解釈してみようと思います(コラムは、原著の

    Elixir版?①「プログラミングHaskell第2版」 - Qiita
  • 単純で頑強なメッセージングシステム、franz - モナドとわたしとコモナド

    Haskell製の新しいメッセージングシステムfranz(フランツ)の紹介。 github.com 背景 取引所にあるマシンで取引プログラムを実行するのが我々の仕事だが、朝8時に起動したらあとは昼寝したり酒を飲んだりというわけにはいかない。モニタリングしたり、分析のためにデータを残しておく必要がある。そのため、プログラムによって解析しやすい形でログを出力する。 今までは複数の種類のレコードをシリアライズし、一つのファイルに連結させる独自のフォーマットを10年近く使っていたが、書いていて恥ずかしくなるような多数の問題を抱えていた。 柔軟性が乏しい: 32bit整数や文字列などの単純な値しか格納できず、例えばレコードを含むレコードなどを表現できない。その結果、複雑なデータは一旦文字列に変換するような運用がされており、そのプリティプリンタやパーサは十分にテストされていない。 コードがまとまってい

    単純で頑強なメッセージングシステム、franz - モナドとわたしとコモナド