並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 1316件

新着順 人気順

haskellの検索結果1 - 40 件 / 1316件

  • References are like jumps

    In a high-level language, the programmer is deprived of the dangerous power to update his own program while it is running. Even more valuable, he has the power to split his machine into a number of separate variables, arrays, files, etc.; when he wishes to update any of these he must quote its name explicitly on the left of the assignment, so that the identity of the part of the machine subject to

    • Inside the Cult of the Haskell Programmer

      A regular column about programming. Because if/when the machines take over, we should at least speak their language. Haskell. It sounded like a good name for a weapon—a well-sharpened blade, like scimitar or katana. The strong German-sounding plosive in its name, as in Nietzsche or Kafka, added a menacing edge. All I really knew about the language was that it was challenging and intended for math

        Inside the Cult of the Haskell Programmer
      • The ultimate guide to Haskell Strings · Hasufell's blog

        © 2021. All rights reserved. Site created with Hakyll. Modified theme lanyon-hakyll based on Lanyon. The ultimate guide to Haskell Strings May 7, 2024, Posted by Julian Ospald This guide is aimed at Haskellers who seek to improve their understanding of String types, be it beginners or seasoned developers. It is also meant to be a quick reference/cheat sheet for deciding which string type to use in

        • neverthrow で局所的に Result 型を使い、 try-catch より安全に記述する

          Result 型 (類似するものとして Either Monad の方が有名かもしれません) を導入する場合、アプリケーション全体の設計を変えたり、全箇所を書き換える必要はありません。 neverthrow は部分的に使用でき影響範囲も閉じるので、局所的に使い始めることができます。 (Rust のような) Result 型 とは ざっくり言うと関数の処理の結果と成否を 1 つの型 Result<T, E> で表したものです。(T は期待する結果の型、 E はエラーを表現する型) 筆者は詳しくはないのですが、 Haskell 等にある Either<L, R> とは厳密には違うようです(Either は両方の値が使用可能であることを前提としている?) 参考: Rust ではなぜ、Either 型ではなく Result 型を採用しているのか neverthrow とは TypeScript で

            neverthrow で局所的に Result 型を使い、 try-catch より安全に記述する
          • RubyKaigi 2024の予習メモ・リンク集 - osyoyu.com/blog

            間違いがあったり、他に予習したほうが良さそうなテーマがあったら教えてください。 Concurrency & Parallelism (GVL, Ractor, M:N, async) これ全部同じ項でいいのか? 並行(concurrency)と並列(parallelism) 本当に同時に実行されるのが並列(雑な説明) 並行であっても並列とは限らないが、並列であって並行でないことはない GVL (Global VM Lock) Rubyで並列に実行されるThreadの数を高々1つに制限する機構 = Rubyでは並列計算はできない ただし、I/O(ファイルの読み書きやネットワークアクセス)はこの制限を無視できる マルチスレッドプログラミングを簡単にする機構として導入されている 複数のThreadから同じ変数にアクセスしてもデータが壊れない(データレースが起きない)のはGVLのおかげ = 真に同

            • Compiling higher order functions with GADTs

              Implementing first class functions in a bytecode interpreter is trivial. But how do compilers that generate machine code (or lower to C, or SSA) implement higher order functions? Back in 2021, I found an answer when contributing closures to the Pallene compiler. Today I was researching something loosely related, and found yet another neat trick called defunctionalization in this paper. Defunctiona

              • Development notes from xkcd's "Machine"

                On April 5th, xkcd released Machine, the 15th annual April Fools project I’ve made with them. It’s a game we’d been dreaming of for years: a giant rube goldberg machine builder in the style of the classic Incredible Machine games, made of a patchwork of machines created by individual xkcd readers. For more details, check out Explain xkcd’s wonderful writeup. This is the story of how we built Machi

                  Development notes from xkcd's "Machine"
                • PHPやNode.jsなどに任意コマンド実行の脆弱性、原因はWindows仕様の理解不足

                  多くのプログラミング言語の処理系に、攻撃者が任意のコマンドを実行できる深刻な脆弱性が見つかった。JPCERTコーディネーションセンター(JPCERT/CC)と情報処理推進機構(IPA)が共同運営する脆弱性対策情報ポータルサイト「JVN(Japan Vulnerability Notes)」で2024年4月15日に公開された。 脆弱性が確認されたのは「PHP」「Rust」「Haskell」の各言語処理系とJavaScript/TypeScriptの処理系「Node.js」、音声や動画をダウンロードできる高機能なコマンド「yt-dlp」である。ただし、この脆弱性の影響を受けるOSはWindowsだけで、LinuxやmacOSなどの他のOSには影響しない。 多くのプログラミング言語は、プログラムの中からOS上でコマンドを実行する機能を持つ。Windowsでは言語処理系が「CreateProces

                    PHPやNode.jsなどに任意コマンド実行の脆弱性、原因はWindows仕様の理解不足
                  • 挫折しないプログラミング勉強法を図解してみる|KY研究所@CoderDojo横浜港北ニュータウンやってます

                    お疲れ様です。Y研究員です。プログラム勉強法の「写経」を実践しながら研究しています。今日はタイトル通り、挫折を防ぐ方法を図解します。 目的一直線を何個かやるChatGPT4にプログラムを作ってもらい、それを「写経」をする勉強法です。大まかに解説をしてもらい、疑問点は更に詳しく質問します。応用問題も作ってくれるので「写経」の次の「少し変えてみる」ができます。知識の定着です。 お題はゲームにしていますが、目的一直線な感じがしました。よくあるプログラミング言語の本とは違う感じです。本では網羅的にプログラムの書き方を紹介します。図解してみます。 青い線が網羅的な本、オレンジが目的一直線を何回かやるイメージです。ChaGPTを使って勉強すると、目的に向かって必要なことだけをします。余計なことはやりません。分からない所を質問すれば幅は広がりますが、広い範囲をカバーしている感じがしません。図にも書きまし

                      挫折しないプログラミング勉強法を図解してみる|KY研究所@CoderDojo横浜港北ニュータウンやってます
                    • どういう時に型注釈を書くか - Qiita

                      最近のプログラミング言語は何らかの型推論を搭載したものが多いです。しかし、型推論も万能ではなく、ところどころで型注釈を書かないとコンパイルが通らない、あるいは意図せず any 型になってしまう、という状況があります。 この記事では、どういう場合に型注釈を書くべきかについてのガイドとなることを目指します。 主に、「HaskellやMLほどではないがある程度の型推論ができる」言語、具体的にはTypeScript, Python(mypy等)、C#、Swiftなどを想定しています。特定の言語についてのガイドではないので、全体的にふわふわした記述になっているかもしれません。 関数の型を書くべきか トップレベル関数の引数は、注釈が必要なことが多いです。一部の言語、HaskellやMLなどは引数の使われ方から型を推論できたりしますが、他の多くの言語はそこまでの能力を持っていません。 戻り値の型について

                        どういう時に型注釈を書くか - Qiita
                      • LogLog Games

                        The article is also available in Chinese. Disclaimer: This post is a very long collection of thoughts and problems I've had over the years, and also addresses some of the arguments I've been repeatedly told. This post expresses my opinion the has been formed over using Rust for gamedev for many thousands of hours over many years, and multiple finished games. This isn't meant to brag or indicate su

                        • CS SYD - Getting your Haskell executable statically linked with Nix

                          I have been making my products statically linked over the past few days. This post presents why and how to statically link your Haskell executables and collects a mapping from obscure error to unexpected fixes. This work would not have been possible without the many-year-long effort of people like nh2. This issue on GitHub is a good summary of what went into making this possible. Why statically li

                          • 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

                            • University of the Peopleを卒業してコンピュータサイエンスの学士号を取りました(仮) - Journal

                              先日AY2024-Term3を終えて卒業要件単位数を満たすことができました。今はまだ卒業申請中なので「仮」としている。ディプロマを手にするまでは実感が湧かなそうだけれど日に日に記憶が薄れていくので振り返りを。 清々しい気分で見物した今年の牡丹 目次 CS 2204 Communications and Networking CS 2301 Operating Systems 1 CS 3307 Operating Systems 2 CS 4402 Comparative Programming Languages CS 4407 Data Mining and Machine Learning さいごに CS 2204 Communications and Networking OSI参照モデル、TCP/IPモデルの各レイヤーの役割とそこに使われているプロトコルやアルゴリズムを一通り学ん

                                University of the Peopleを卒業してコンピュータサイエンスの学士号を取りました(仮) - Journal
                              • Choreographing a dance with the GHC specializer (Part 1)

                                Specialization is an optimization technique used by GHC to eliminate the performance overhead of ad-hoc polymorphism and enable other powerful optimizations. However, specialization is not free, since it requires more work by GHC during compilation and leads to larger executables. In fact, excessive specialization can result in significant increases in compilation cost and executable size with min

                                  Choreographing a dance with the GHC specializer (Part 1)
                                • Hypothesisとpytestを使ってDjangoのユニットテストを書く - 何かを書き留める何か

                                  Hypothesisとは何か、プロパティベーステストとは何か Hypothesisは、Python向けのプロパティベーステストのライブラリである。 プロパティベーステストは、生成された多数の入力データに対してプロパティ(性質)が満たされるかどうかをテストする手法である。 HaskellのQuickCheckライブラリが初出で、現在は各プログラミング言語に移植されている。 従来のユニットテストは、ある程度固定したテストデータを指定してテストを行っていた。 その際、境界値分析などで妥当なパラメータを決定していた。 しかし、境界値分析が必ず通用するとは限らないし、人間が行う以上、ミスも発生する。 プロパティベーステストはデータを固定する代わりにそのデータが満たすプロパティを指定してテストを行う。 実際のテストケースはHypothesisがプロパティを満たすパラメータを決めて生成してくれる。 人力

                                    Hypothesisとpytestを使ってDjangoのユニットテストを書く - 何かを書き留める何か
                                  • 「作りたいものをいかに早く完成させるかが正義」 まつもとゆきひろ氏が語る、ソフトウェア開発におけるベロシティの重要性

                                    「作りたいものをいかに早く完成させるかが正義」 まつもとゆきひろ氏が語る、ソフトウェア開発におけるベロシティの重要性 #18 動的型付け言語と大規模開発 今回のテーマは「動的型付け言語と大規模開発 まつもとゆきひろ氏:こんにちは。まつもとゆきひろです。Matzチャンネル、18回目になりますね。今日は前回の続きで、「動的型付け言語と大規模開発」について話そうと思います。 本当は前回放送リリースした次の日ぐらいに放送できるようにと思っていたんですけど、意外と忙しくてですね(笑)。 今度、フィンランドのヘルシンキで、「Euruko」というカンファレンスが開かれるんですけれども、まだ物理で海外旅行する気にならないので、キーノートを録画しましょうという話になって、そのキーノートの準備をして、スライドを書いて、英語の講演を録画するみたいな作業をしていたら、あっという間に時間が経ってしまって、「Voic

                                      「作りたいものをいかに早く完成させるかが正義」 まつもとゆきひろ氏が語る、ソフトウェア開発におけるベロシティの重要性
                                    • 多くのプログラミング言語に危険な脆弱性 ~Windows環境の引数エスケープ処理に不備「Rust」「PHP」「Node.js」「Haskell」などに影響/

                                        多くのプログラミング言語に危険な脆弱性 ~Windows環境の引数エスケープ処理に不備「Rust」「PHP」「Node.js」「Haskell」などに影響/
                                      • Windowsで動くプログラミング言語に脆弱性、引数の扱い方の穴を突いて攻撃

                                        CERT Coordination Center (CERT/CC, Carnegie Mellon University)は4月10日(米国時間)、「VU#123335 - Multiple programming languages fail to escape arguments properly in Microsoft Windows」において、Windows上で動作する複数のプログラミング言語から引数を適切にエスケープしない脆弱性を発見したと報じた。この脆弱性はアプリケーションのコマンドインジェクションにつながるとして注意を呼びかけている。 VU#123335 - Multiple programming languages fail to escape arguments properly in Microsoft Windows 脆弱性の詳細 多くのプログラミング言語にはオ

                                          Windowsで動くプログラミング言語に脆弱性、引数の扱い方の穴を突いて攻撃
                                        • Improve performance of you Rust functions by const currying

                                          Currying is a functional programming technique that allows you to partially apply a function’s arguments and return a new function that takes the remaining arguments. This is widely used in functional programming languages like Haskell, as a fundamental tool for many design patterns. However, today we use the technique in Rust to improve the performance of our functions. TL;DR: You can also take a

                                          • “バグの出にくい”プログラミング言語「Haskell」「PureScript」の基礎知識

                                            ダウンロードはこちら 「関数型プログラミング」は、堅牢(けんろう)性や再利用性を高め、よりバグの少ないソースコードの作成を可能にするプログラミング手法を指す。「Haskell」と「PureScript」は、変数の不変性や強力な型システムといった仕組みを通じて、関数型プログラミングの概念を実現するプログラミング言語だ。 本資料は、HaskellとPureScriptの特徴と、両者の使い分け方を解説する。両言語および関数型プログラミングの基礎を学ぶことで、より信頼性の高いプログラムを開発するためのヒントが得られるはずだ。 中身を読むには、「中身を読む」ボタンを押して無料ブックレットをダウンロードしてください。 連載:HaskellとPureScript

                                              “バグの出にくい”プログラミング言語「Haskell」「PureScript」の基礎知識
                                            • 「自分の未来予測を信じてちょっと意地を張ってみる」 まつもとゆきひろ氏がRubyに型宣言を入れない理由

                                              「自分の未来予測を信じてちょっと意地を張ってみる」 まつもとゆきひろ氏がRubyに型宣言を入れない理由 #17 動的型付け言語と大規模開発 テーマは「動的型付け言語と大規模開発」 まつもとゆきひろ氏:まつもとゆきひろです。Matzチャンネル17回目ということでお送りします。ちょっと前になりますが9月28日に私が技術顧問を始めたクラウドサーカスという会社さんがテックイベントを開催されて、その時のテーマが「動的型付け言語と大規模開発」というテーマでした。 その時に話したこととか、話そうとしたこと、話そうと思っていたんだけど時間の関係で話せなかったことなどを補足する意味も含めて今日はちょっと放送しようかと思います。というか、分量が多いので2回に分けて話そうかなと思っています。 このクラウドサーカスのイベントのテーマは別に私から指定したわけではなくて、先方が「こんなテーマで話したいんだ」とか「聞き

                                                「自分の未来予測を信じてちょっと意地を張ってみる」 まつもとゆきひろ氏がRubyに型宣言を入れない理由
                                              • Python普及しろ協会に入会したい

                                                この記事はタナイ氏によるPython滅ぼす協会に入会したいを読んでから執筆したものです。 この記事の趣旨はPython滅ぼす協会に入会したいに対する反論という形をとりながら、タナイ氏により「バカの言語」と揶揄され、「使ってエンジニアを名乗るというのは」「滑稽」とまで言われたPythonの立場を再考することです。 追記 本記事は「Pythonはこれだけ優れた言語だからみんな使おう!」というものではなく「言うほど酷くないと思うよ」程度のものです。 型アノテーションがあるからと言って静的型付けを軽視しているわけでもなければ、map関数をもってmapメソッドを不要だと言っているわけでもありません。 この記法は嫌い〜この記法が好き〜と表明することは個人の自由ですが、同様に「この記法は実はこういう意味があって〜」という意見があればそれを聞いた上で、物事を判断して欲しいです。もちろん、聞いても意見が変わ

                                                  Python普及しろ協会に入会したい
                                                • Calling Haskell from Swift

                                                  struct User { let name: String let age: Int } // birthday(user: User(name: "Anton", age: 33)) = User(name: "Anton", age: 34) func birthday(user: User) -> User { // Calls Haskell function... } To support this workflow, we need a way to convert the User datatype from Haskell to Swift, and vice versa. We are going to serialize (most) inputs and outputs of a function. Even though the serialization as

                                                  • Type Inference Was a Mistake

                                                    Type inference is bad. It makes code harder to read, and languages that use it too much are harder to write. It’s a false economy whereby you save unobservable milliseconds of typing today and make everything else worse. Type Inference Makes Code Less Readable If you have an IDE with a working LSP, you can hover over variables to see their types. In VSCode with rust-analyzer I can see the type ann

                                                    • Python滅ぼす協会に入会したい

                                                      なぜ令和にもなって動的型付け言語を使うのか シフトレフトという概念が生まれたのは二十年以上も前のはずだ。 それにもかかわらず動かしてみるまで答え合わせもできない言語で開発をするという発想自体がどうかしている。 同じ動的型付けといってもJavaScriptはブラウザという事情があるし、型の表現力に優れたTypeScriptがあるからまだよい。 しかし、Pythonはどうだ。他にいくらでも選択肢があるなかで、サーバーサイドにわざわざ選定する言語ではなかろう。 貧弱な型ヒント、しかも書いたところで大した効用もない。 使っている外部ライブラリにひとつでも型ヒントがクソなものがあれば即座に破綻する。 型というガードレールもシートベルトもなしで糞を撒き散らしながらする開発にはうんざりだ。 シンタックスもキモい 動的型付けもさることながら、シンタックスもキモい。とにかく思考を妨げる語順になっている。 m

                                                        Python滅ぼす協会に入会したい
                                                      • いろんなソートアルゴリズムを実装してみよう - Qiita

                                                        最近昼夜逆転がひどい六角レンチです 夕方まで起きてようと思ったらいつの間にか寝て夜に起きる謎 haskellに興味を持って入門の記事を見ながらソートを実装して楽しんでます。 ガードとかパターンマッチ楽しい 他にはどんなソートがあるんだろうと思いwikipediaを見ていろいろなソートアルゴリズムを発見したので、pythonの練習として実装してみたいと思います。 実装してみたソートたちはここに置いてます。 バブルソート def bubblesort(target:list): # バブルソート for targetrange in reversed(range(1, len(target))): isnotswap = True for r in range(targetrange-1): if target[r] > target[r+1]: target[r], target[r+1]

                                                          いろんなソートアルゴリズムを実装してみよう - Qiita
                                                        • Flora :: [Package]

                                                          A package repository for the Haskell ecosystem

                                                          • YAPC::Hiroshima 2024レポート――YAPC::Japan史上最大規模の448名が参加 | gihyo.jp

                                                            2024年2月9、10日、広島国際会議場(広島)にて、YAPC::Hiroshima 2024の前夜祭・本編・懇親会が開催されました。 コロナ禍を過ぎて、再び完全オフラインでの開催となったYAPC::Japan。初めて中国地方・広島での開催となり、本編参加者には過去最大規模の448名の参加者が集まり、改めてYAPCというコミュニティが持つ熱量の大きさ、技術を楽しみたい人たちの期待を体感できる場となりました。 写真 多くの来場者が足早に本編受付を行った(写真提供:Japan Perl Association) 今回は本編の会場:厳島(ダリア)のセッションを中心に、その模様をお届けします。 「what you like」の気持ちで――オープニングメッセージ オープニングを担当したのは広島在住の@chanyou0311氏。 写真 「ようこそ広島へ!!」のメッセージで本編が開幕(写真提供:Japa

                                                              YAPC::Hiroshima 2024レポート――YAPC::Japan史上最大規模の448名が参加 | gihyo.jp
                                                            • ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP

                                                              Object-Oriented Conference 2024で発表した資料です。 https://fortee.jp/oocon-2024/proposal/b31c9818-3cb8-4350-adfe-cbc839cdf829 ビジネスの専門知識(ドメイン)を中心に据えたドメイン駆動設計に代数的データ型などの関数型のパラダイムを加えたよりタイプセーフな関数型DDDを紹介します。 本セッションではドメインモデリングによって発見したモデルやビジネスロジックをソフトウェアに反映する際により型を重視した設計を加えます。 型で表現する範囲が広がることでビジネスロジックをより明確にコードで表現できるようになります。 さらには型で表現されているためコンパイルフェーズで気付けるミスが増え、ソフトウェアの品質向上にもつながります。 関数型の考えをいれるといってもただ単にHaskellなどに代表される関

                                                                ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP
                                                              • RBSをテストコードにする - スペクトラム

                                                                DALL-Eより: Imagine a scene where the abstract concepts of Ruby programming and property-based testing blend harmoniously. Picture a large, glowing ruby crystal まいどお馴染み、作ってみたシリーズです。 今回は、RaaP(ラープ)というツールを作りました。RBS as a PropertyでRaaPです。 github.com RaaPはテスティングツールの一種で、RBSをそのままテストコードにみたてて実行してくれるツールです。 次のようなRBSがあったとして class Foo end class Bar def initialize: (foo: Foo) -> void def f2s: (Float) -> String end

                                                                  RBSをテストコードにする - スペクトラム
                                                                • romgrk

                                                                  I often feel like javascript code in general runs much slower than it could, simply because it’s not optimized properly. Here is a summary of common optimization techniques I’ve found useful. Note that the tradeoff for performance is often readability, so the question of when to go for performance versus readability is a question left to the reader. I’ll also note that talking about optimization n

                                                                  • The Real C++ Killers (Not You, Rust)

                                                                    This is Words and Buttons Online — a collection of interactive #tutorials, #demos, and #quizzes about #mathematics, #algorithms and #programming. Hello! I’m Oleksandr Kaleniuk and I’m a C++holic. I have been writing in C++ for 17 years and for all those 17 years I’ve been struggling to get rid of this devastating addiction. It all started in late 2005 with a 3D space simulator engine. The engine h

                                                                    • 各言語の非同期処理の仕組みまとめ - Qiita

                                                                      はじめに 非同期処理はアプリケーション開発においてほぼ必須となっていますが、プログラミング言語やライブラリによってその実現方法は大きく異なります。 この記事では、以下の言語における非同期処理の実現方法を調査し、分類した結果をまとめたものです。 JavaScript/TypeScript(Promise) Kotlin(Coroutines) Java(Reactor Core/Completable Future) Python(asyncio) Golang(goroutine/conc) Haskell(async) Rust(tokio) 非同期処理の分類 構文 async/await 採用している言語: JavaScript/TypeScript/Python/Kotlin/Haskell/Rust もっとも代表的な非同期処理の構文です。 asyncとawaitという対になる二つの

                                                                        各言語の非同期処理の仕組みまとめ - Qiita
                                                                      • GHC 9.10の新機能

                                                                        GHC 9.10.1-alpha1が2024年3月14日にリリースされました。正式版のリリースは4月ごろを目指しているようです(9.10.1 · Milestones · Glasgow Haskell Compiler / GHC · GitLab)。 この記事では、GHC 9.10の新機能を確認していきます。過去の類似の記事は GHC 9.2の新機能と、GHCの動向2021 GHC 8.10とGHC 9.0の新機能 GHC 9.4の新機能 GHC 9.6の新機能 GHC 9.8の新機能 です。 この記事は網羅的な紹介記事とはなっていません。是非、公式のリリースノート類も参照してください: 2.1. Version 9.10.1 — Glasgow Haskell Compiler 9.10.0.20240313 User's Guide docs/users_guide/9.10.1-

                                                                          GHC 9.10の新機能
                                                                        • もうJavaには戻れない? 開発者が「Kotlin」を好きになる5つの理由

                                                                          関連キーワード Java | JavaScript | プログラミング 「Kotlin」(コトリン)は、メインフレームアプリケーションからモバイルアプリケーションまで幅広く開発に使えるプログラミング言語だ。近年はKotlinをプログラミング言語「Java」と併用する、もしくはJavaの代替としてKotlinを採用するという動きが広がりつつある。Javaではなく、Kotlinが人気を集める理由はどこにあるのか。開発者がKotlinを好む理由を5つに分けて紹介する。 開発者がJavaより「Kotlin」を好む5つの理由 併せて読みたいお薦め記事 プログラミング言語に関するトピック なぜ今こそ「Java」なのか? 使いやすい言語な訳 「Haskell」は何ができるプログラミング言語? 4つの特徴とは 1.Javaとの互換性 KotlinはJavaをベースにしている。開発者はJavaのコーディング

                                                                            もうJavaには戻れない? 開発者が「Kotlin」を好きになる5つの理由
                                                                          • 継続モナドで立ち向かうローンパターンと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地獄 - 星にゃーんのブログ
                                                                            • とほほさんのキーノートに感動、ベストスピーカーに聞く登壇の感想、YAPCはコミュニティが混ざる場。YAPC::Hiroshima 2024 非公式ふりかえり会文字起こしレポート - STORES Product Blog

                                                                              2024年2月13日に『YAPC::Hiroshima 2024 非公式ふりかえり会』を開催しました。イベントでお話した内容を文字起こし形式で紹介します。 hey.connpass.com 登壇者紹介 STORES hogelog:YAPC初参加 ヨヨイ:YAPCは3、4回参加経験あり hiromu:YAPC初参加 藤村:YAPC初参加 えんじぇる:YAPC初参加 スマートバンク 三谷:YAPC初参加、YAPC::Hiroshima 2024でベストスピーカー賞を受賞 nyanco:YAPCスタッフ 前夜祭の感想 hogelog:『YAPC::Hiroshima 2024 非公式ふりかえり会』を始めていきます。ぜひYAPCのスタッフだった方や登壇してた方などなど、喋ってもいいですよという方はぜひ挙手をしていただけると嬉しいです。 本日の登壇者側で喋る人を紹介させていただきます。私はhoge

                                                                                とほほさんのキーノートに感動、ベストスピーカーに聞く登壇の感想、YAPCはコミュニティが混ざる場。YAPC::Hiroshima 2024 非公式ふりかえり会文字起こしレポート - STORES Product Blog
                                                                              • Ruby: "uselessシンタックスシュガー"シリーズ「endレス(1行)メソッド」(翻訳)|TechRacho by BPS株式会社

                                                                                概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: “Useless Ruby sugar”: Endless (one-line) methods 原文公開日: 2023/12/01 原著者: zverok 日本語タイトルは内容に即したものにしました。 endlessは一部を除き「endレス」としました。 本記事は、最近のRubyで出現した"無用な"(さもなければ物議を醸す)構文要素を扱うシリーズ記事の一環です。本シリーズの目的は、そうした機能を擁護することでも批判することでもなく、その機能が導入された理由、設計、そして新構文を使うコードに与える影響を分析するための一種の「思考のフレームワーク」を皆さんと共有することです。本シリーズのあらまし記事もご覧ください。 今回は、コミュニティでも賛否が大きく分かれた(ともするとナンパラのときよりも著しかった)機能である1行メソッド定義(o

                                                                                  Ruby: "uselessシンタックスシュガー"シリーズ「endレス(1行)メソッド」(翻訳)|TechRacho by BPS株式会社
                                                                                • Visual Studio Code February 2024

                                                                                  Version 1.87 is now available! Read about the new features and fixes from February. February 2024 (version 1.87) Update 1.87.1: The update addresses these issues. Update 1.87.2: The update addresses this security issue. Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap Welcome to the February 2024 release of Visual Studio Code. There are many updates in

                                                                                    Visual Studio Code February 2024