並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 1312件

新着順 人気順

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

  • RubyKaigi 2024に参加できて本当に良かった - joker1007’s diary

    RubyKaigi 2024に参加してきました。 今回参加までに紆余曲折あったので、一時は参加を諦めていたんですが、何とか無事参加することが出来ました。 2011年に初参加して以来休まず参加していたので、ついに連続参加が途絶えるのかと思ってましたが、無事連続参加を達成できて嬉しい限りです。 今回はそういう事情もあってか、コミュニティとの繋がりを強く感じることができたRubyKaigiでした。 色々思いが溢れてしまって、技術的に楽しかったこと、自分が嬉しかったこと、参加前の事情とか全部書いてたらえらい分量になってしまいました。気が向いたら目に付いたところだけ読んでくださいw 参加前 そもそも何があったかというと、大体去年の12月ぐらいから咳が止まらなくなり、更に年明けぐらいに高熱が出た上で咳が出続けている状態でした。 余りに咳が酷かったので、喉に傷が付いた後胃酸が逆流したりして声帯の近くに潰

      RubyKaigi 2024に参加できて本当に良かった - joker1007’s diary
    • How terminal works. Part 1: Xterm, user input

      Motivation Introduction User input strace Printing non-printable stty raw -echo -isig UTF-8 Conclusion Motivation This blog series explains how modern terminals and command-line tools work. The primary goal here is to learn by experimenting. I’ll provide Linux tools to debug every component mentioned in the discussion. Our focus is to discover how things work. For the explanation of why things wor

      • Getting OCaml Through the Eye of a Needle

        I think OCaml is a great language. While it’s always too simplistic to put languages on a straight line, I feel it’s alright to say that it’s somewhere in between Java/C#/Go and Rust/Haskell for a couple of reasons: Immutability is the default, but you can use types that are mutable if you need/want to You can throw exceptions if you want, or play it “safe” with a Result type Concurrency can be ha

          Getting OCaml Through the Eye of a Needle
        • Pythonのように書けてGPU上で並列処理できる新プログラミング言語「Bend」、2D画像→3Dを高精度生成するGoogle「CAT3D」など重要論文5本を解説(生成AIウィークリー) | テクノエッジ TechnoEdge

          2014年から先端テクノロジーの研究を論文単位で記事にして紹介しているWebメディアのSeamless(シームレス)を運営し、執筆しています。 1週間分の生成AI関連論文の中から重要なものをピックアップし、解説をする連載です。第47回目は、生成AI最新論文の概要5つを紹介します。 生成AI論文ピックアップ GPU上でネイティブ動作する並列処理が可能な新プログラミング言語「Bend」とランタイムシステム「HVM2」 2D画像から3Dコンテンツを生成する「CAT3D」をGoogleが開発 大規模言語モデルは追加学習や新知識で幻覚生成が増加。Googleなどが調査 画像とテキストを使った長文生成が得意なAIモデル「Chameleon」をMetaが開発 Transformerを超える「Mamba」は視覚認識タスクに必要か? 開発した「MambaOut」モデルで検証 GPU上でネイティブ動作する並列

            Pythonのように書けてGPU上で並列処理できる新プログラミング言語「Bend」、2D画像→3Dを高精度生成するGoogle「CAT3D」など重要論文5本を解説(生成AIウィークリー) | テクノエッジ TechnoEdge
          • GitHub - HigherOrderCO/Bend: A massively parallel, high-level programming language

            Bend is a massively parallel, high-level programming language. Unlike low-level alternatives like CUDA and Metal, Bend has the feeling and features of expressive languages like Python and Haskell, including fast object allocations, higher-order functions with full closure support, unrestricted recursion, even continuations. Yet, it runs on massively parallel hardware like GPUs, with near-linear sp

              GitHub - HigherOrderCO/Bend: A massively parallel, high-level programming language
            • 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
                                • 相互再帰関数の型付きクロージャ変換

                                  はじめに 相互再帰関数のシンプルな型付きクロージャ変換を考案したので紹介する。このブログは、最終的に相互再帰関数の型付きクロージャ変換に行き着くために、クロージャ変換の各手法を図解して、その相違点を明確にしながら解説している。そのため、クロージャ変換のイントロ的な使い方もできると思う。 型付きクロージャ変換(Typed closure conversion)と呼ばれるものは[Minamide, 1995]が元になっていて、ここで多相型を含めた変換方法が示された。その後、拡張として[Morrisett, 1998]で再帰関数における3つの変換手法が示された。これらの研究はやがて、型付きアセンブリ言語(TAL)などの研究へとつながっている。しかし、相互再帰関数については明確に記述された文献が(私の知る限り)ない。だからといって、変換方法が自明であるかといえばそうではないと思う。実際に実装してみ

                                    相互再帰関数の型付きクロージャ変換
                                  • 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