Type inference. ML等の静的に強く型付けされた言語において,変数や関数の型をプログラマが明示しなくても,処理系が自動的に決定してくれる仕組みのこと.型理論の知見に基づく. 型推論が可能な型システムとしてはHindley-Milner型システムが有名.これを拡張したものがOCamlを始めとしたML系言語やHaskell等の言語処理系に搭載されている.
Java 10から登場したvar(型推論)について簡易的にまとめる。 導入された目的 定型挿入文を減らし、コードの可読性を向上させるため。 使用例 // var型で宣言されている内容は、コメントの内容と同義である。 var num = 10; // int num = 10; var str = "Hello!"; // String greeting = "Hello!"; var array = new int[3]; // int array[] = new int[3]; var object = new Object(); // Object object = new Object(…
型推論 letで定義した時に型を自動で決定し、決定した型以外を代入するとエラーになる let moji = '文字'; let suuji = 1; 以下でエラーが発生。letで定義した時に型推論でstringとnumberで型指定している moji = 1; suuji = '1'
こんにちは。みなみんです。C#入門シリーズの続きです。 今回は「var」キーワードについて記事にしました。
こちらに移行しました. www.drumato.com
正規表現、楽しんでますか? 僕は文字列の中から特定の条件の部分を抜き出すときに正規表現をよく使います。 しかし正規表現は一般的に重くなる傾向があり、せめてカッコ内文字くらいは簡単に高速に取れるようにしたいと感じるようになりました。 カッコ内の文字を抜き出したい人が多い + 正規表現の質問が多い カッコ内の文字を抜き出す処理ってプログラムで割と使うんですよね。 なのに「どうしたらいいですか?」って質問が後を絶えない。 正規表現は使いこなせれば便利なものの、初心者には難しいし融通利かないことも多々あるんですよね。 ちなみに僕はテンプレートエンジンORTHIA開発時に「{%%}」内の関数と「{{}}…
estie でソフトウェアエンジニアをしている徳永(@yTo_9)です。 estie では Ruby を書いたりTypeScriptを書いたりしています! estie 夏のブログ祭りにかこつけて、せっかくなら普段は追わない部分だけど、気になっていたYJITなるものを深掘りしてみようと思い、「YJITがなぜRailsアプリケーションの高速化を実現できたのか」を調べてみたので紹介したいと思います。 「どうせ難しいんでしょ?」と思いながら調べてみたのですが、講演や論文の説明がわかりやすく、意外に概要を把握することは難しくありませんでした。 YJIT の核となっているのは Lazy Basic Blo…
Ruby界隈にチェリー本あらばTS界隈にはブルーベリー本誕生! 2022/4/22に発売された新刊です。物理本はなんと965ページのボリューム、TypeScriptを基本からみっちり解説した本となっています。 インパクトのある表紙も時々ある技術書関連では、Ruby界隈ではご高名な伊藤 淳一さん【give IT a try】の『プロを目指す人のためのRuby入門』が「チェリー本」という愛称がついているのは割と有名な話。 瑞々しいブルーベリーがどどんと載っている本書『プロを目指す人のためのTypeScript入門』は、習って「ブルーベリー本」もしくは「ベリー本」という愛称がついたそうです。Type…
お昼に書いた記事のときは、まだもう1度出かけるかなとも思っていたが、そこそこな時間になったので、もう今日は出かけないことにする。 CDが届いたっぽいので集合ポストに取りに出るくらいは出る。 鶏肉と玉ねぎを加熱して食い、C++の参考書を読み始めた。範囲for文(c#のforeach的な)を試したついでに、autoの型推論では配列を推論しないことを知った。オンラインGDB以下3ページ、参考書に載っていたサイトを開いた。言語の振る舞いを確認するのに使ったのはオンラインGDBで、他2ページは表示しただけ。
名前とラベルは同義語。束縛と割り当ては同義語。広義のタイピングとプロファイリングは同義。束縛にはハード束縛とソフト束縛がある(後述)。 束縛される前のラベルは変数 ハード束縛された後のラベルはリテラル 束縛の種類: ハード束縛: 名前〈変数〉にシングまたはリテラルを束縛する。 ソフト束縛: 名前〈変数〉にコンビネーション〈項〉を束縛する。 コンテキストが曖昧語なので、次のように形容詞を付ける。 変数タイピング・コンテキスト 変数ハード束縛コンテキスト 変数ソフト束縛コンテキスト 環境という言葉を使う場合は: 変数タイピング・コンテキスト=変数プロファイリング・コンテキスト=コンテキスト=指標 …
ツイート 西田和史(k.bigwheel) 開発基盤 / SRE ⌨️🖊️ @k_bigwheel まだ必要性がないからユーザー入力文字列のエスケープなどしてなかったんだけど、試してみると自動的にescapeされてる。nextjsがよしなにやってくれているのか、便利だなあ。 23:53 西田和史(k.bigwheel) 開発基盤 / SRE ⌨️🖊️ @k_bigwheel vercel、体験めちゃくちゃいい。herokuよりも更に軽い使い心地。 アプリができてからデプロイ、独自ドメインでの公開まで30分かからなかった。体感10分ぐらい。 23:32 西田和史(k.bigwheel) 開発基盤…
以前のgstreamer-rsの準備はして勉強ある程度していたのですが、間が空いてバグフィックスとかリポジトリの移動とかがあったりしたので改めて環境構築手順を。 (2022/08/07) 1. gstreamer-rs について 2. インストール 2.1. GStreamerのバイナリのインストール 2.2. pkg-config のインストール 2.3. 環境変数の設定 3. サンプルの起動 4. まとめ 1. gstreamer-rs について Open SourceのMultimedia FrameworkのGSteamerの公式Rustバインディングです。 GStreamerはffm…
はじめに 機械学習エンジニアの大庭です。普段はマイクロアドが提供する広告配信プラットフォーム UNIVERSE Ads に接続する機械学習 API の研究開発をしています。 マイクロアドでは、機械学習モデルの学習側との連携が容易なこととメンテナンス性を重視して Python で機械学習 API を実装しています。Python は使いやすい反面、基本文法は速いとは言えない言語です。そのため、実行時間制約の厳しい Real Time Bidding (RTB) のなかで使うには高速化を意識しておく必要があります。今回は様々ある Python の高速化手法の理解と整理のため記事にしました。 個人的に…
昨日は時間がなくて早々に連続記録が途絶えてしまいましたが、今日は書きました! 一昨日の記事で言及したメモリの話…ではなくデータ型についてもう少し掘り下げる話。
https://github.com/Fieldscope/flux-hooks を参考にしつつ、型をつけたり型推論が効きやすいように調整したりしてます。 export const useFluxStore = < TStore extends ReduceStore<TState, unknown>, TState = ReturnType<TStore['getState']> >( store: TStore, reducer: (store: TStore) => TState = store => store.getState(), deps: unknown[] = [] ): T…
let での変数宣言と値の束縛は、特に mut ではなくても、別でも良いらしい。 const は一緒にやらないとだめらしい。 let x: i32; x = 123; println!("x: {}", x); // Compile Error! // const C: i32; // C = 123; // println!("{}", C); x: 123これはスコープ内であれば、別のブロックでも値の束縛ができるらしい。 変数宣言時に型を明記しなくても、束縛時の型推論は動作するらしい。 let y; if x > 100 { y = 234; } else { y = 345; } pri…
Rustaceanなら周知の事実であるが、Rustは基本式指向の言語である。そのため、すべてのブロックは式として扱われる。そしてとにかく型に厳しいことでも知られる(型に厳しいと言うよりは、少し特殊な場合を除いて部分型付けされていない、というだけのことなのだが)。今回は、式において{ break v; }や{ return v; }の型はどういう型になるのかについて書いていきたい。
ワスド株式会社 開発チームのmako_jiiです。 今回は「react-hook-formのSubmitHandlerを利用したonSubmit処理の返り値に型をつける」と題しまして、記事を書かせていただこうかと思います。 なぜこの記事を書こうと思ったかというと、react-hook-formを使用した実装中で詰まったところがあったからです。 下記画像のように、useFormを使用する場合form部分のみ別コンポーネントに切り離して実装することが弊社では多いです。 form の状態管理にはreact-hook-formを使用しており、バリデーションにはclass-validatorを使用してい…
アルゴリズムとは アルゴリズムとは、問題を解決するための手順です。 コンピュータは、アルゴリズムに従って計算をしています。アルゴリズムが非効率なものであると、どんなに性能が良いコンピュータを使っていても計算量が多くなってしまいます。 より良いアルゴリズムとは より良いアルゴリズムとは、少ない計算回数で同じ結果を得ることがアルゴリズムです。 C++のキーポイント #include <bits/stdc++.h> と using namespace std; は毎回最初に書く C++のプログラムはmain関数から始まる cout << "文字列" << endl;で文字列を出力できる // や /…
こんにちは!気づけばラクス入社5年目の aa_crying です。 本日は、現在学習中のTypeScriptの基礎についてお話しできればと思います。 現在ラクス開発部では、部署間での技術知識共有のためTypeScriptの勉強会(読書会)を開催しています。 TypeScriptを先行して導入した部署から、導入を検討している部署向けに知識を展開することが目的です。 まずは指定されたページを読み、その後に読んで理解した内容やわからなかったことを周りのメンバーと議論する形をとっています。 勉強会で読んでいる書籍はこちらになります。 www.amazon.co.jp 今回は、勉強会で得たTypeScr…