並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 17 件 / 17件

新着順 人気順

haskellの検索結果1 - 17 件 / 17件

  • 「作りたいものをいかに早く完成させるかが正義」 まつもとゆきひろ氏が語る、ソフトウェア開発におけるベロシティの重要性

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

      「作りたいものをいかに早く完成させるかが正義」 まつもとゆきひろ氏が語る、ソフトウェア開発におけるベロシティの重要性
    • 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 より安全に記述する
      • 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

        • 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仕様の理解不足
          • Hypothesisとpytestを使ってDjangoのユニットテストを書く - 何かを書き留める何か

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

              Hypothesisとpytestを使ってDjangoのユニットテストを書く - 何かを書き留める何か
            • 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

              • 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

                • 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

                  • 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
                    • 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
                      • 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のおかげ = 真に同

                        • 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"
                          • 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

                            • 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

                              • 挫折しないプログラミング勉強法を図解してみる|KY研究所@CoderDojo横浜港北ニュータウンやってます

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

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

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

                                    どういう時に型注釈を書くか - Qiita
                                  • 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)
                                    1