並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 23 件 / 23件

新着順 人気順

TAPLの検索結果1 - 23 件 / 23件

  • TypeScriptは型安全じゃないからすばらしい - まめめも

    「TypeScriptではじめる型システム」という記事をn月刊ラムダノートに寄稿しました。 新刊を発売しました "『n月刊ラムダノート』Vol.4 No.3(2024)発行のお知らせ https://t.co/PGppk1aRRA— lambdanote (@lambdanote) 2024年10月4日 どんな内容? TypeScriptの極小サブセットに対する型検査器を書き、それを通して型システムを体感してみよう、という内容です。 詳しく言うと、boolean型とnumber型と関数型しかないTypeScriptサブセット言語がターゲットです。 型検査器の実装言語にもTypeScript(処理系はDeno)を使います。 TypeScriptづくしの一品です。 わかる人向けに言うと、「型システム入門」という本(通称TAPL)の単純型付きラムダ計算に相当する内容をTypeScriptで説明し

      TypeScriptは型安全じゃないからすばらしい - まめめも
    • 私の Rust 学習記録 2021

      ※ この記事は 2021/10 時点での内容です。 社内勉強会で 2021 年に発表した内容で、外部公開しようと思って寝かせてしまっていました。 記事としての鮮度は落ちてますが、頑張って書いたものなので Zenn に公開しておきます。 概要 社内異動を機に業務で Rust を書けることになった私の Rust 学習記録です。 今までの言語経験はメインが Ruby、少し JS/TS、趣味で Go をやっていたぐらいです。 学習の方針 なんでもかんでも Rust で書く。 Rust は GC のないシステムプログラミング言語として大体 C 言語と同等のレイヤーからカバーできるので、書こうと思えば OS から Web アプリまで書ける。 yew のような UI 構築用のライブラリもあるので、フロントエンド開発もできる。 というわけでなんでもかんでも Rust で書ける。 リポジトリ運用 デプロイの

        私の Rust 学習記録 2021
      • 「型システム入門」の先へ:TypeScriptの型システムのいくつかの側面 | 雑記帳

        この記事は TypeScript Advent Calendar 2023 の8日目の記事です。言語実装勢にも役立つ内容を含んでいるかもしれないので、 言語実装 Advent Calendar 2023 にも登録しています。 TypeScriptで型システムに興味を持った人が「型システム入門」を読んだという話を時々聞きます。「型システム入門」は、Types and Programming Languages (TAPL) という本の邦訳で、型システムに興味を持った人が読むのは自然なことです。 型システム入門 プログラミング言語と型の理論 | Ohmsha 型システム入門 サポートページ ですが、この本の原著は2002年出版で、最近の話題がカバーされていなかったり、邦題に「入門」とあるように発展的な話題は扱っていなかったりします。一応続編的な感じのAdvanced Topics in Typ

        • よわよわエンジニアがTAPL(型システム入門)を読んだら

          こんにちは,sititou70です.私は社会人2年目のよわよわWebフロントエンドエンジニアであり,「数学」とか「証明」とは無縁の人生を送っています. そんな私ですが,がんばって型システム入門(通称:TAPL)という本を読み終えました.全32章,503ページ,牛乳パック1本分の重さがあり, 自立します. 自立する本は大抵やばいです. TAPLの序文を見ると,想定読者は プログラミング言語と型理論を専門とする大学院生および研究者 プログラミング言語の鍵となる概念に触れたい,計算機科学の全分野の大学院生および習熟度の高い学部生1 となっています.本記事では 「そんな本を,学生や専門家でない人間(私)が読んだらどうなるのか」 について書きます.専門的な用語は避けますので,TAPLの雰囲気だけでも感じ取ってもらえたら嬉しいです. どうなったのか 宇宙語が読めるようになった 「型安全」を説明できるよ

            よわよわエンジニアがTAPL(型システム入門)を読んだら
          • 自分がプログラミング力の成長を実感できるようになった瞬間について

            私はプログラミングを 3 年近くやってみて、「ただ知らなかっただけで損した」という悔しい経験をたくさんしました。 そこで自分にとって「これを知っているだけでエンジニアとしてステップアップできた」というものをまとめてみようと思います。 ちなみにステップアップする前の私はこのようなとても凄いコードを書いていました。 ご査収ください。 プログラミングを始めて最初に作った成果物です。 https://gist.github.com/sadnessOjisan/6f1a1956d4848e3c17f0c0c5af28cfb8 (//varを付けたらダメだよ(ローカル変数になっちゃう。関数内だからローカル変数使うと外部からアクセスできない) というコメントがすごい・・・) はじめに 書こうと思ったきっかけ 自分は大学生の時にプログラミングに触れたことがあるものの情報系を出ておらず、エンジニアになったの

              自分がプログラミング力の成長を実感できるようになった瞬間について
            • NDCの各分類から1冊ずつ選び、偏りがないブックリスト(100冊)を作ってみた【前編】 - 天才クールスレンダー美少女になりたい

              はじめに 今年もついに、大学生協事業連合謹製のブックリスト「大学生のための100人100冊」がバズって絶賛されたり猛批判されたりする季節がやってきた。 https://www.univ.coop/pamph/pdf/book-100.pdf まあ、選書がいいとか悪いとか、衒学的だとか、衒学的で大二病だとして何が悪いのだとか、相対性理論の元の論文を読む意味全然ないだろとか、分野が偏りすぎだろとか、論理哲学論考の原著はさすがに読ませる気ないだろとか、まあいろんな意見が出て当然だとは思う。 (量子力学などと違って、特殊相対性理論は元の論文を読んでも害はない気がする。自然科学と原文/古典主義は相容れないという事実を選者がちゃんと理解しているかは怪しいが、それはそれとして「古典*1! 天才の論文! 原著! 簡潔な説明! カッコイイ!」みたいな素朴な感情は否定しても仕方がないし、自然科学の理論を学ぶと

                NDCの各分類から1冊ずつ選び、偏りがないブックリスト(100冊)を作ってみた【前編】 - 天才クールスレンダー美少女になりたい
              • 12年前の『型システム入門』翻訳の思い出話

                @ カワるガワるTAPLカタるヨる https://taplts.connpass.com/event/320294/

                  12年前の『型システム入門』翻訳の思い出話
                • 転職しますの記 - bonotakeの日記

                  このブログ記事はいわゆる転職ブログです。昨日3/16が現職の最終出社日だったので、公開するものです。 ただし、よくある転職ブログのように、元職場や新しい職場を大きく取り上げて評価することを意図したものではありません。 僕は転職活動をするのがこれで3回目になるのですが、今回は転職活動そのものがめちゃめちゃ面白く、ものすごく得るものが多かったので、その体験のうち公開できそうなところだけをとりあえず書き残そうという試みです。ちなみに長いです。 目次 目次 どこに転職するの そもそもお前は何者なの なぜ転職を考え始めたか 1. いつ辞めてもいい、と思いながら仕事をしていた 2. Ubieを知った 3. スクラムマスターとしてもっと場数を踏みたくなった 4. 諸々の事情で選考に進み始めた スクラム人材としてびっくりするほど評価された どうやって進路を決めたか 現職にも残るという選択 他にも面白い体験

                    転職しますの記 - bonotakeの日記
                  • ML のサブセットの型推論器を Coq で検証する - fetburner.core

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

                      ML のサブセットの型推論器を Coq で検証する - fetburner.core
                    • 関数型言語初心者にこそおすすめしたい"OCaml"の特徴

                      2019年7月29日、Opt Technologiesが主催するイベント「Fun Fun Functional (2) 関数型言語Lightning Talks!!」が開催されました。関数型プログラミングについて楽しく学び、知見を共有することを目的に開催されている本勉強会。今回は6名のエンジニアが、関数型プログラミング言語にまつわるユニークな発表を行いました。プレゼンテーション「関数型初心者にこそおすすめしたい言語 "OCaml" 」に登壇したのは、cedretaber氏。講演資料はこちら 関数型初心者にこそおすすめしたい言語 "OCaml" cedretaber氏(以下、cedretaber):「関数型初心者にこそおすすめしたい言語 "OCaml"」ということで、またOCamlの話だということになってしまうんですが。 自己紹介、cedretaberと申します。 「ドワンゴから来ました」っ

                        関数型言語初心者にこそおすすめしたい"OCaml"の特徴
                      • 交差型を持つ単純型付きλ計算の型付け可能性について - fetburner.core

                        これは型 Advent Calendar 2019 15日目の記事です. 交差型についてのよく知られた事実——交差型を持つ単純型付きλ計算において,強正規化する項は型付け可能であることを解説します. はじめに 交差型とは,読んで字のごとく型と型の共通部分を表す型です.すなわち,型を持つ項e(つまり )とは,型を持ち(),なおかつ型も持つ項()を指します.交差型のある体系では,SMLの+のようなアドホックな多相性1をのように表現できる嬉しさが知られています.しかし,真にヤバい点と言えば後述する性質でしょう. 交差型を含むある種の言語——交差型を持つ単純型付きλ計算——において,任意の項の型付け可能性と強正規化性は一致することが知られています.確かに左の性質から右の性質は導けそうです.単純型付きλ計算,System F,CoC等々,多くの言語において,型付けできる項は強正規化する2ことが知られ

                        • TaPLを読んでる

                          RustやTypeScriptに関するちょっと込み入ったドキュメントや記事を読んだりすると「部分型」だとか「多相」のようなワードが頻出するのだけどこれらの意味があんまりよくわかっていなかった。 普段よく書いているプログラミング言語のはずなのにその(主に型の)解説で使われている単語が全くわからんというのはどうなのかというあたりに型システム入門(通称 TaPL)を読み始めたモチベーションがある。 しかしまぁ普段プログラミングをしていると型キャストしたりジェネリクスを使ったりとか、何かしらの形でそういったワードに由来する言語機能を使う経験自体はすでにあり、今更小難しい話を知らなくても使い方はわかるので大して困ることもないわけで。 それにこの先プログラミング言語を本格的に開発する予定もないし、その理論的な意味といったものに特別興味を持つことはなかったわけだがふとTypeScriptの型メモというQ

                            TaPLを読んでる
                          • 型システム入門

                            レビュー (日本語訳) 読み始めてから約3年ほどのゆったりペースで読み終わりました。 通称: TAPL (TaPL) (Haskell の) 型システムについて学習するために何か良い本ありませんか?と聞かれればたぶん全員がこの本をおすすめするんじゃないでしょうか。 最初から読めば最高にわかりやすい型システムの入門書です。しかし、多くの人が挫折している入門書です。(入門書詐欺という声もよく見かけますが、そんなことは無いです。ただたんに内容が難しい入門書というだけです) 特に書籍が分厚い (さらに1ページの情報量が多い) のでほとんどの人が11章の単純型付きラムダ計算の拡張の章を読み終わる前に途中で読むのをやめてしまっているような気がします。少なくとも11章までは読むべきです。この辺りまでであればインターネット上に解説などもあるため、ふんわりした理解でも読み進めることができると思います。また、

                            • バッカスの功績と経歴 - Arantium Maestum

                              John Backusという計算機科学者には大きな功績が三つある: IBMでFORTRANの開発を提案・主導したこと 構文の形式的な定義を可能とするBackus-Naur FormをALGOLの開発のために提案したこと チューリング賞受賞講演で、FORTRANのような命令型プログラミングからの脱却を提唱して関数型プログラミング言語FPを提案したこと 現代でも使われている最古の言語であるFORTRANの開発責任者というだけではなく、実際にプロジェクトを売り込んで上司に承認させたのもバッカスのようで、これはやはりすごい。LISPの開発者McCarthyも「IPLはアセンブリ言語っぽくて嫌だ、やっぱりFORTRANみたいに綺麗に書ける言語が使いたい」(意訳)とLISPを作る前には言っていた。 BNFに関しては構文解析を多少なりともかじったことのある人間なら必ず目にするし、TaPLの宇宙語の一部に

                                バッカスの功績と経歴 - Arantium Maestum
                              • TaPL のサンプルコードを dune でビルドして読みやすくする

                                TaPL(型システム入門 -プログラミング言語と型の理論-) は型システムについて体系的に学べる教科書です。 友人から「型周りちゃんと勉強したいならこれ読むと良いよ〜」と勧められ読んでいるのですが、正直何もわからんという状態なのでサンプルコード(実装)から本文を読み解いています。 この本にはサポートページが存在しており、implementations というセクションからサンプルコードを DL することができます。 ただしこのサンプルコードをそのまま読んでいくのは少し辛いところがあったのでそれを読みやすくできるようにするのが本記事の趣旨です。 TaPL のサンプルコードがやっていること 本文では構文の評価規則や型付け規則を実装していく例が乗っているのですが、配布されるサンプルコードでやっていることはコンパイラの自作です。 評価可能な形に変換したり、それをテストしたりするわけなので、字句解析

                                  TaPL のサンプルコードを dune でビルドして読みやすくする
                                • Rust の `!` (ビックリマーク、エクスクラメーションマーク、感嘆符、never) 型 - Don't Repeat Yourself

                                  タイトルは記号のググラビリティ確保のためにわざとつけています(笑)。動作はすべて、Rust 1.47.0 (stable) です。nightly を使用した場合は nightly と文中に記載しました。 TL; DR Rust には ! という「何も返さないことを示すモノ」が存在する。 never 型と呼ぶ。 値を何も返さない計算の表現として使用される。 普段は型強制される(ので、使っていることに気づかないかも)。 never 型は安定化されていない。 TL; DR 基本 ! = never 型 never 型はどこに出てくるのか Coercing 発展 never 型はまだ安定化されていない std::convert::Infallible で、なんで Rust には ! がいるの? Rust ではなぜ、関数の戻り値だけにしか ! を使用できなくしてあるの? 今回も記事が長くなってしまい

                                    Rust の `!` (ビックリマーク、エクスクラメーションマーク、感嘆符、never) 型 - Don't Repeat Yourself
                                  • University of the Peopleを卒業してコンピュータサイエンスの学士号を取りました - Journal

                                    先日AY2024-Term3を終えて卒業要件単位数を満たすことができました。今はまだ卒業申請中なので「仮」としている。ディプロマを手にするまでは実感が湧かなそうだけれど日に日に記憶が薄れていくので振り返りを。 5/16追記 その後無事に書類が届き晴れて卒業となりました✌ 清々しい気分で見物した今年の牡丹 目次 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
                                    • 論理学およびその周辺領域の本 - Sokratesさんの備忘録ないし雑記帳

                                      論理学とその周辺領域の本を並べてみた*1.この記事にあげる本は,何らかの形でわたし自身が手に取ったことのあるもの(読んだとは言っていない)に限定している*2.ただし,原語版は手に取ったことがあるが,日本語訳はそうではない,またはその逆という場合はある. すべての本に対してコメントをしきれていないので,周りからサボりを指摘されやすいように,公開しながら作業することにする.暫定でもコメントの終わった本には⛄をつけることにする(2022/08/07 追記). (2023/11/29 追記)本をいくつか増やしたが,いまいちいつ増やしたのか記憶にないものも多いので,そのあたりの細かい管理はあきらめた.せめて,今後,本に対するコメントを追記する場合は日付を明示する努力をする.(追記終わり) (2023/12/03 追記)「論理」に興味があるが「論理学」に興味があるか自信のない場合は次の記事に目を通すと

                                        論理学およびその周辺領域の本 - Sokratesさんの備忘録ないし雑記帳
                                      • Idrisでふんわり眺める依存型

                                        どうも,よわよわエンジニアです.前回の記事では,TAPLを読んで型システムに入門しました. その記事の中で,1つ腑に落ちなかったことがあります.そう, 依存型 です. 依存型は,TAPLでも発展的内容として深く触れないんだっピ… よわよわエンジニアがTAPL(型システム入門)を読んだら 依存型は,関数型,全称型,型演算子に続いてラムダキューブを完成させる最後のピースでした. それが埋まらず,日々ストレスを貯める一方だったのですが,はてブのコメントで「実戦で色々試したくなったらIdrisがあるよ!!」と親切な方が教えてくださったので, 依存型の雰囲気を味わうためにIdrisへふんわり入門してみます. 依存型ってなんやねん 型にプログラムが書けるってどういうこと プログラミングと証明に何の関係があるんだ といった疑問を解決するまでの日記です. Idrisとは Idris=Haskell+依存型

                                          Idrisでふんわり眺める依存型
                                        • Featherweight Go を読んでみた

                                          Go言語にジェネリクスを導入するために,その形式的な議論を研究した論文「Featherweight Go」が6月頭に発表されました. せっかくなので(久々に)全訳をしながら丁寧に読んでみたので,それを簡単にまとめることにします. 可能な限りGo言語に馴染みのない人や,プログラミング言語の形式的な議論に馴染みのない人でも理解できるようにしてみます. 注意 僕は英語がとても苦手です(DeepLを駆使しても3週間かかりました) 僕はGoでアプリケーションを少し書いていますがコアについては全く詳しくありません 僕は言語の形式的な議論を院生時代にやってましたが卒業して数年経ちます なので間違ってる可能性も十分に考慮してください. TL;DR Goにジェネリクスを導入する新しいデザインを提案: インターフェースと型アサーションを駆使する方法 新デザインを形式的に議論するために FG と FGG を定義

                                          • std::variantと不動点演算子 - in neuro

                                            実は、std::vectorはC++17から不完全型をサポートしたので、std::variantと組み合わせると以下のようなコードが書ける。 struct config_t { std::variant<bool, int, double, std::string, std::vector<config_t>> data; }; これを上手く使えばJSONなどの木構造をかなり簡単に(ポインタを陽に触らずに)扱える。std::mapが不完全型をサポートしてくれていないのがつらいが、std::vector<std::pair<std::string, config_t>>とすることで強引に回避できる。 これをしたかったらしき人の質問を見つけた。 stackoverflow.com これが通らないとのことだ。 class ScriptParameter; using ScriptParamete

                                              std::variantと不動点演算子 - in neuro
                                            • プログラミングの本を読みたいが、数学が分からなくて読めない|magurotuna

                                              このエントリの中で、大学院に行って勉強をし直すことに強い興味がある、ということを書いた。学生の頃の自分は、とにかく卒業をすることだけを考え、学問に対して心の底から湧き上がる探究心、好奇心のようなものを感じることはほとんどなかった。それが今、ある程度プログラムが書けるようになるにつれ、コンピュータのことをもっと知りたい、プログラミングについて理論的な勉強がしたい、そう思うようになってきた。 学ぶのに遅すぎることはない、とよく言われるが、それにしても、大学の頃、今くらいの情熱をもって勉強に取り組めていたら今頃、自分にはどのような世界が見えていたのだろうか、ということを考えると、学生の頃の時間の使い方について反省せざるを得ない。 とはいえ、Steve Jobsがスタンフォード大学卒業式のスピーチで "Connecting the dots" というフレーズで表現したように、将来絶対に役に立たない

                                                プログラミングの本を読みたいが、数学が分からなくて読めない|magurotuna
                                              • 近況 - たにしきんぐダム

                                                キャリア的にもアカデミア的にも私生活などで大きなアップデートが多かったのでブログ書いた! 仕事 ポーランドのIT企業にリモートで働き始めました フリーランスになりました。アルプ株式会社で副業させていただいています 大学院 研究 - PX/22 というプログラミング体験に関するワークショップで発表しました 勉強 いったん休学 その他 ScalaMatsuri にスタッフで参加しました Apex ソロダイヤ 仕事 ポーランドのIT企業にリモートで働き始めました 2022年3月から VirtusLab という会社で Scala (Tooling) Engineer として週3で働いています。 本社はポーランドのKrakowですが 公用語は英語 ポーランドを中心にヨーロッパ各地からリモートで働く人も多い、部署(会社?)の中ではアジア人は僕だけっぽい OSSのScalaの開発支援ツール(Scala3

                                                  近況 - たにしきんぐダム
                                                1