並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 26 件 / 26件

新着順 人気順

型推論の検索結果1 - 26 件 / 26件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

型推論に関するエントリは26件あります。 typescriptプログラミング などが関連タグです。 人気エントリには 『データ型は明示しないで! Modern C++での型推論』などがあります。
  • データ型は明示しないで! Modern C++での型推論

    このように、(1)(2)と「vector<int>」を2回も書かなければなりません。特に(2)では、右辺の型は分かっているんだから、左辺はそれに合わせてよ! という文句が出そうです。 初期化漏れを防止する このように、同じ意味の型を何回も書くのはかったるいな! というときに型推論は役立つわけですが、もっと切実な理由があります。それは、変数の初期化漏れの防止です。JavaでもRustでもそうなんですが、変数は宣言しっぱなしでOKです。宣言しっぱなしというのは、明確な初期化が行われていないという意味です。こうなると、その変数を参照しようとするといろいろとまずいことが起きてきます。 基本データ型とかなら、どんな値か分からない ポインタ型とかなら、どこを指しているか分からない(ダングリングポインタ) なので、実行時にプログラムが不可解な動作をしたり、いきなり落ちたりするわけです。しかし、コンパイラ

      データ型は明示しないで! Modern C++での型推論
    • TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論

      2024-11-16 TSKaigi Kansai 2024

        TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
      • コンパイル時計算でラムダ計算の構文解析器・評価器・型推論器を実現 (Scala 3編) - 貳佰伍拾陸夜日記

        またか. またなのか. 何回目だ. ということで, ラムダ計算のインタプリタの実装としては4回目くらい*1, コンパイル時計算でやるものとしても3回目くらいになってしまうけど, ラムダ計算の処理系をまた書いてしまった. 今回の目的は, Scala 3にはmatch typesという機能があり, これだけでチューリング完全なのではないか, というのを検証するため. また, 文字列リテラル型を操作する型レベル関数が3.1.2-RC1にきていて, これを使えば構文解析器だって書ける. 経緯 過去の事例 関数と返り値 パターンマッチと再帰呼出し Scala 3の型レベル言語 match types リテラル型操作 ラムダ計算の実装 評価 印字 構文解析 型推論 (型検査) おわりに 経緯 もともとは, id:xuweiさんが文字列リテラル型でコンパイル時に動作する構文解析器を実装していたのが始まり

          コンパイル時計算でラムダ計算の構文解析器・評価器・型推論器を実現 (Scala 3編) - 貳佰伍拾陸夜日記
        • Next.js の API Routes から SWR の型推論を導く

          ファイルシステム API Routes の課題 Next.js のファイルシステムを利用した routing は、直感的に定義を追加することができます。一方、モジュールシステム観点からは透過的参照がないため、TypeScript の型推論と相性が悪いです。Next.js における型安全な routing ソリューションとして pathpida がありますが、API Routes には対応していません。 useSWR から API Routes の API を呼ぶシーンで期待に沿うものが見当たらなかったので、今回自作してみました(リポジトリはこちら)本サンプルでは、npm script のpostinstallを hook に、src/types/pages/apiに生成ファイルが出力されるので、あらかじめnpm installを実行してお試しください。 サンプルで実現している型推論概要 は

            Next.js の API Routes から SWR の型推論を導く
          • 型推論のTips集 - Qiita

            始めに 自分が今までTypeScriptで型推論させるにあたって、中々いい方法が見つからず、他にいいやり方がないか模索して時間がかかってしまうケースがいくつかありました。 そこで今回は割と使うケースで解決するのに苦労したものについて、Tipsという形でまとめてみました。自分はこのやり方でやっていますが、他にいいやり方があれば是非コメントください! 基本編と上級編に分けており、上級編の方が割と込み入ったことをやっているものになります。 基本編 Object.keysに型をつける Object.keysの返り値の型はstringで固定されているため、以下のように書くとtype errorになってしまいます。 const obj = { a: 10, b: 'text', c: true, }; Object.keys(obj).forEach((key) => { // key: string

              型推論のTips集 - Qiita
            • Biome v2の型推論を試して限界を知る

              皆さんこんにちは。先日、Biome v2がリリースされ話題となりました。Biome v2の新機能の一つに型推論があります。 TypeScriptコードに対するlintにおいて型情報を使う (type-aware linting) 機能は、これまでのところTypeScript-ESLintによって提供されてきました。これは、実際のTypeScriptコンパイラを使って型情報を取得するので、重いという欠点がありました。TypeScript自体もGoへの移植などを通じてパフォーマンス改善に取り組んでいますが、Biomeはこの問題に対して別のアプローチをとっていました。それが、本家TypeScriptコンパイラに頼らず独自に型推論を行うというものです。 ただし、TypeScriptコンパイラは非常に複雑なシステムであり、別実装でその型推論結果を完全に再現するのはまず不可能です。そのため、Biome

                Biome v2の型推論を試して限界を知る
              • TypeScript 5.5からは関数からType predicatesの型推論が有効になるよ!

                去る2024年4月25日にTypeScript 5.5 ベータ版リリースの情報が発表されました。 どうやら今回の目玉機能は、『推論されたtype predicate』ということです。 この記事では、これまでとこれからでtype predicateがどのように変わるのかをお話ししたいと思います。 環境の用意 これまでの動作を確認するための環境は、既に用意していた別プロジェクトのランタイムを利用しました。バージョンは5.1.6です。 ベータ版環境は新たに用意します。公式のリリースノートにもありますが、以下のコマンドを実行するだけです。 これでベータ版の実行環境ができたのですが、VSCodeさんが最新版の仕様で型推論を行なってくれません。 ので、調教強制的にいうことを聞かせます。 やり方は、適当なtsファイル開いてshift + cmd + p → typescript:Select Types

                  TypeScript 5.5からは関数からType predicatesの型推論が有効になるよ!
                • Ruby 3.0.0RC1が登場、型の記述や静的型推論ツールなど新機能。12月25日の正式リリースに向け

                  Ruby 3.0.0RC1が登場、型の記述や静的型推論ツールなど新機能。12月25日の正式リリースに向け Ruby 3では、型の記述や静的型推論ツール、並列処理などの新たな機能が追加されます。 型の記述では、型情報を記述するための「RBS言語」が用意されるようになりました。このRBSで型情報のコードを記述しておくことで、Rubyのコード中のクラスやモジュールに対して型情報を与えることができるようになります。 静的型推論ツールとしてバンドルされる予定なのがTypeProfです。Rubyのコードをこのツールに入力すると、推論の結果としてRBSで記述された型情報のコードが出力されます。 これによりRubyコード内のバグを発見する助けになるほか、出力されたRBSコードをそのまま、あるいは改変して型情報を与えるためのRBSコードとして用いることなども可能です。 ただしまだTypeProfは実験的な段

                    Ruby 3.0.0RC1が登場、型の記述や静的型推論ツールなど新機能。12月25日の正式リリースに向け
                  • ML のサブセットの型推論器を Coq で検証する - fetburner.core

                    この記事は言語実装 Advent Calendar 2020 の5日目の記事です. 一度でも型推論器を書いたことがあれば,そのあまりの邪悪さ,あるいはその複雑さに恐れ慄いたことでしょう. 参照を用いて単一化を実現しようものなら構文木は参照に汚染され,純粋関数型に実装しようものなら大量の型代入をどのような順序で適用したものか悩まされる. これは Hindley-Milner 型推論器を実装する上での宿命のようなものです. 本記事では,MLのサブセット——型付きλ計算をletと参照で拡張した,let多相をサポートする言語——の型推論器を Coq で実装し,その正当性を証明します. Coq で検証を行うことで我々は型推論器のバグへの恐怖とデバッグの労力から真に解放され,枕を高くして眠ることができることでしょう. もっとも、型付きλ計算を let 多相で拡張した言語の型推論器の正当性は実はすでに証

                      ML のサブセットの型推論器を Coq で検証する - fetburner.core
                    • 【TSKaigi2025: 型推論の扉を開く―集合論と構造的型制約で理解する中級へのステップ 】TypeScript苦手の私を登壇へ導いた「たった1つの習慣」 - PLEX Product Team Blog

                      はじめに こんにちは。 株式会社PLEXでWebエンジニアをしている栃川です。 このたび、TSKaigi2025で「型推論の扉を開く―集合論と構造的型制約で理解する中級へのステップ」というタイトルで登壇いたしました。 この記事では、TypeScriptが苦手な私でも登壇者としてステージに立つことができた「たった1つの習慣」についてお伝えします。 ※ 発表資料は記事の末尾にてご覧いただけます。 はじめに 前提 自分を変えた「たった1つの習慣」 日報はどう書くのか? 週報じゃダメか? 最後に 登壇資料 宣伝💡 弊社の各事業部でエンジニアを求めています! SaaS PlexJob コーポレート 私の連絡先はこちら 前提 私はTypeScriptに対する強い苦手意識があります。 というのも、これまで私はRuby(動的型付け言語)を得意としてきました。 TypeScriptは入社後に学び始めたもの

                        【TSKaigi2025: 型推論の扉を開く―集合論と構造的型制約で理解する中級へのステップ 】TypeScript苦手の私を登壇へ導いた「たった1つの習慣」 - PLEX Product Team Blog
                      • Scalaでoverrideした際の共変戻り値型と型推論 - xuwei-k's blog

                        ScalaでもJavaでも、overrideする際に、sub typeでoverrideすることが可能です。 (すごく古い1.4以前のJavaでは不可能だったはずだが) Javaの仕様書で英語だと covariant return type というはず?の機能です。 https://docs.oracle.com/javase/specs/jls/se11/html/jls-8.html#d5e14373 $ jshell | Welcome to JShell -- Version 17.0.6 | For an introduction type: /help intro jshell> interface A { Object a(); } | created interface A jshell> class B implements A { @Override public St

                          Scalaでoverrideした際の共変戻り値型と型推論 - xuwei-k's blog
                        • Juliaの型推論アルゴリズムを実装する

                          先日書いた記事ではJuliaの型推論について、特にその機能の1つであるisaを使って条件分岐した先のブロックにおけるflow-sensitivityについて調べてみました。 この記事ではより基礎的な部分に注目して、Juliaの型推論のアルゴリズム(の一部)を理解し、実装してみようと思います。今回紹介する技術はより一般にプログラムの「抽象解釈」("abstract interpretation", "data-flow analysis")と呼ばれているもので、実際に実装するのも"constant folding"(「定数畳み込み」)と呼ばれる一般的なコンパイラ最適化問題です。なのでJuliaに興味がない人にも読んでいただけると嬉しいです。 アルゴリズム data flow problem "a data-flow problem"(抽象解釈問題)は以下の4つの要素を用いて定義します: P

                            Juliaの型推論アルゴリズムを実装する
                          • GHC 9.2 で導入されたQuick Look型推論アルゴリズムについて - 朝日ネット 技術者ブログ

                            初めまして、朝日ネット開発部の hogeyama です。 今回は Haskell の中級的なトピックとして、 GHC 9.2 で導入された Quick Look 型推論アルゴリズムを取り上げようと思います。 概要 Haskell のデファクトスタンダードなコンパイラである GHC では通常の多相(ジェネリクス)の一般化である非可述的多相(impredicative polymorphism)を実装していますが、その型推論アルゴリズムは長らく「型推論が弱い」「実装が不安定でコンパイラのバージョンアップでデグレが起きる」といった問題を抱えていました。 しかし昨年10月、Quick Look という新しいアルゴリズムが GHC 9.2 に実装されたことでこの問題が解決しました。 本記事ではこの Quick Look によって何が変わるのか、利用する際に何に気をつければよいのかを非可述的多相の概要

                              GHC 9.2 で導入されたQuick Look型推論アルゴリズムについて - 朝日ネット 技術者ブログ
                            • 小さいMLの型推論機を書いた

                              intro# 最近、五十嵐先生のプログラミング言語の基礎概念を読んでいました。コンパクトにlet多相までの知識がまとまっており非常に読みやすかったです。 OCamlの学習がてら実際に言語を実装してみようと思い、 筑波大学の講義資料を参考にさせていただきました。 環境構築・実装にあたってはいくらか大変だった部分があるのですがこれらは気が向いたら別途記事にします。 duneの使い方 OCamlでのテストの仕方 OCamlのCI環境の構築 on GitHub Actions OCamlでのパーサーコンビネータの作り方・使い方 Menhirやocamlyaccなどは意図的に使いませんでした 今回作ったもの自体はこちらにあります。watiko/minicaml 振り返り# さて、参考書では最終的にlet多相を有した言語としてPolyTypingML4というものを扱います。文法や型についての定義は以下

                                小さいMLの型推論機を書いた
                              • a11y を強化する ReactComponent の型推論

                                次の Button は tag の指定により、HTML 要素を出し分ける Component です。出力結果は下段のとおりです。この Component を通し a11y を強化する型注釈を考察したので、メモとして投稿します。 <Button tag="button">+1</Button> <Button tag="a" role="button">+1</Button> <Button tag="input" type="button" value="+1" />

                                  a11y を強化する ReactComponent の型推論
                                • Go言語のジェネリクス入門(2) インスタンス化と型推論

                                  はじめに 注意: 2023/06/08更新 Go1.21(順調なら2023年8月にリリース予定)において、型推論アルゴリズムの枠組みが新しくなります。 この記事の多くの内容は古いものとなります。 更新予定は今のところないので、注意書きを記載しておきます。 ↑の変更のポイントだけ筆者なりにまとめておくと、関数引数型推論と制約型推論との間の順序の関係がなくなることと、順序の関係がなくなることによって型推論に使える情報の種類を増やしやすくなることがポイントです。 注意 この記事はGo1.18リリース前に書いたのですが、そのせいでGo1.18以降で動作しなくなっているサンプルコードがあります。 具体的には、Go1.18リリース時点では「パラメータ化された型」にたいする型推論が行われなくなりました。そのため、このような型推論についてのサンプルコードが動作しなくなっています。 型推論アルゴリズム自体は

                                    Go言語のジェネリクス入門(2) インスタンス化と型推論
                                  • 【TypeScript】和音(コード)の構成音を型推論できるユーティリティ型を作る

                                    これは SmartHR アドベントカレンダー 2022 の 8 日目の記事です。 またこの記事の内容は、こちらのイベントに登壇した際のスライドをもとにしています。 はじめに こんにちは、 SmartHR でフロントエンドエンジニアをしている ytaka です。 SmartHR では TypeScript を利用してフロントエンドの開発しています。 TypeScript、便利ですよね。 型によって安全に開発できますし、補完のおかげで素早くコードを書くこともできます。 そんなTypeScriptの便利な機能として、 ユーティリティ型 があります。ユーティリティ型を使うと、ある型から別の型を作れます。 たとえば、組み込みで用意されているユーティリティ型の一つに Pick があります。 Pick を使うと、オブジェクト型から任意のプロパティのみを抜き出したオブジェクト型を作成できます。 type

                                      【TypeScript】和音(コード)の構成音を型推論できるユーティリティ型を作る
                                    • NECが新AI技術「ルール発見型推論技術」を開発、従来手法よりも少ない数で精度の高いルールを導出可能に

                                        NECが新AI技術「ルール発見型推論技術」を開発、従来手法よりも少ない数で精度の高いルールを導出可能に
                                      • RBS meets LLMs - 大規模言語モデルを用いた型推論を試してみた

                                        Leaner 開発チームの黒曜(@kokuyouwind)です。 RubyKaigi 2023 で「RBS meets LLMs - Type inference using LLM」と題して LT させていただきました。 そのうち本編のアーカイブ映像が出るはずですが、文字でも読めるよう大まかな内容を記事にまとめておきます。 また時間に収まりきらなかった内容も少し触れておくので、本編見ていただいた方も 本編に盛り込めなかった話 の節を呼んでもらえると嬉しいです。 発表スライド 以下の slides.com のものがマスターです。 フォントが中華フォントに化けてしまっていますが、一応 SpeakerDeck に上げたものも埋め込んでおきます。[1] 発表概要 Ruby の型定義ファイルである RBS を、 ChatGPT で推測できるか試してみました。 特に変数名や関数名の単語の意味を使うこ

                                          RBS meets LLMs - 大規模言語モデルを用いた型推論を試してみた
                                        • 「コンパイラ: 原理と構造」の型推論をClojureで書いた

                                          「コンパイラ: 原理と構造」の型推論をClojureで書いた コンパイラ: 原理と構造 という本を読んだ。最近は本の内容を3秒ほどで忘れてしまうので、 少しでも記憶を定着させるため手を動かすことにした。 大昔に決定性有限オートマトンを作ったり、 LALR構文解析器を作ったりするプログラムを(Common Lispのマクロとして) 書いたことがあるので字句解析と構文解析はすっ飛ばして、 いきなり型推論をするプログラムを書くことにした。型推論を書くのは初めてだ。 本ではSML#を使っているが、「最も稼げる言語はClojure」という噂を聞いたので Clojureで書いてみることにした。Clojureを書くのも初めてだ。 できあがったもの user> (type-inf-defs '((def fdec (fn p (tuple (- (get p 0) 1) (get p 1)))) (def

                                          • TSは型推論が楽しい

                                            今までTSをたくさん書く機会がなかったのですが,最近はTSをたくさん書く機会に恵まれたおかげでTSの型推論に面白さを感じています. TSの型 今まではGoを書く機会が多く,たまにTSを書くと型の弱さが気になっていました. 例えば,Goで次のようなコードはコンパイルエラーとなります. package main type A int type B int func foo(a A, b B) {} func main() { var a A = 1 var b B = 2 foo(b, a) // ./prog.go:12:6: cannot use b (variable of type B) as A value in argument to foo // ./prog.go:12:9: cannot use a (variable of type A) as B value in arg

                                              TSは型推論が楽しい
                                            • 型推論器の実装① Hindley-Milner型システム

                                              Damas-Milner 型システム Damas-Milner 型システムとは、型の注釈を必要とせずに多相型を推論する、ラムダ計算の型システムである。ブログタイトルでは、より一般的に使われる Hindley-Milner という名称を用いたが、本稿では Damas-Milner の名称を用いたい。というのも、本稿では Robin Milner と Luis Damas による "Principal type-schemes for functional programs" で示されたアルゴリズムを直接実装するからである。 続き 型推論器の実装 ② Algorithm M 型推論器の実装 ③ 副作用のあるアルゴリズム 1. 言語(The language) 項(Term) 通常多相ラムダ計算では、ラムダ抽象に型がついたり、型適用、型抽象が構文に必要となるが、Damas-Milner 型システ

                                                型推論器の実装① Hindley-Milner型システム
                                              • [Rust] 型推論実装してみた

                                                基本的には、型の制約を満たすように型の選択肢を絞り込むのが型推論だと言えます。数独パズルを解くときに考えることに似ています。各マスに入れても整合性が保てる選択肢を絞り込んでいくのです。 関数型言語では有名な Hindley-Milner 型推論というものがありますが、ここでは扱いません[1]。 また、関数を跨いだ推論は行わず、関数宣言の型は完全であることを必要とします。これも Rust と同じです[2]。 動的型付けや Duck typing との違い 型推論は動的型付けや Duck typing とは似て非なるものです。似てもいないかもしれませんが、「型を書かなくてもよい」という意味では初心者は混同してしまいそうです。 動的型付けは変数がどんな型でも取れるという意味で型を書かなくても良いのですが、実行時に予期しない型によるエラーが生じえます。大規模な開発では特にエラーの原因がわかりにくく

                                                  [Rust] 型推論実装してみた
                                                • Microsoft、TypeScript 5.4ベータ版を発表 ー クロージャ内での型推論が向上、NoInfer型導入

                                                  Microsoftは、2024年1月30日にTypeScript 5.4 Betaの提供を発表した。この新リリースでは、変数の型推論が向上し、他にもさまざまな新機能が追加されている。 Microsoftは、2024年1月30日にTypeScript 5.4 Betaの提供を発表した。この新リリースでは、変数の型推論が向上し、他にもさまざまな新機能が追加されている。 TypeScript 5.4では、関数クロージャ内での変数の狭小化が進化し、JavaScriptコードの表現がより容易になった。これにより、開発者はよりスマートで効果的なコードを書くことができるようになる。 また、新しいユーティリティ型であるNoInferが導入され、ジェネリック関数の型引数推論をより細かく制御できるようになった。これにより、型の推論がより柔軟になり、開発プロセスがよりスムーズに進むだろう。 JavaScript

                                                    Microsoft、TypeScript 5.4ベータ版を発表 ー クロージャ内での型推論が向上、NoInfer型導入
                                                  • Java の学習 (ローカル変数の型推論(var)) - Cou氏の徒然日記

                                                    ◆ Java Java自体、仕事でも時々触れることはありますが、管理やドキュメント対応のほうが多くなってきて、コードを書く機会がかなり減ってきており、特にJavaについては、最近のコードは見ていても、「???」と思う書き方も結構出てきています。 自分がまともにJavaのコードを書いていたのは…正直、Java 1.5とかそういう時代。 今のように「Java SE〜」というような表記ではなく、「J2SE (*)」のような表記でしたね。 (*) J2SE:  Java 2 Platform, Standard Edition 最近はまたJavaに触れる機会も増えてきた…ということもあり、 そのため、久々にJavaの勉強でもしようかなと思いました。 ★ 型推論 (var)  :  Java SE 10〜? Javaといえば、当初は、型定義はしっかりとしていなければなりませんでした。 ただ、変数の初

                                                      Java の学習 (ローカル変数の型推論(var)) - Cou氏の徒然日記
                                                    • RemixのuseLoaderDataとuseActionDataに型推論が追加されました | DevelopersIO

                                                      Remix v1.6.5のリリースに大きなDX改善となるuseLoaderDataとuseActionDataの型推論が追加されました。 はじめに こんにちは、CX事業本部Delivery部MADグループの森茂です。 Remix v1.6.5のリリースにuseLoaderDataとuseActionDataの型推論が追加されました。普段Remixを利用していないといったい何のこと?と思われるかもしれません。しかしRemixでアプリケーションを開発しているユーザーにとっては非常に大きなDX改善となっているので紹介させてください:) useLoaderDataとuseActionData Remixでは、APIからデータを取得するなどサーバーサイド側でデータの処理を行い、そのデータをフロント側へ渡す際useLoaderDataという関数を利用します。また、フォームのデータをやり取りするためには

                                                        RemixのuseLoaderDataとuseActionDataに型推論が追加されました | DevelopersIO
                                                      1

                                                      新着記事