Type
Safety
HERPでは使用する言語の選定にあたって、豊かな表現力を伴った型システムを重視しています。正しく型付けられたプログラムからは実行時エラーを排除できるため、サービスの信頼性を向上させることができます。
...
ユースケース層が投げうるエラーの型を「量化した open union」にしておけば複数のユースケースを合成したときに上の層でエラーハンドリングが楽にできて最高です!
この記事は Haskell Advent Calendar 2020 20日目の記事です. TL; DR タイトル
...
引数で受け取った値を通じてのみ値を構築することを強制するランク2多相を使ったテクニック
Dhall の Prelude を眺めていて見付けた,ランク2多相を使ったテクニックを紹介する.
...
Algebraic Effectsの型システム入門(2) 多相エフェクト
はじめに これは前回の続きであり、型 Advent Calendar 2019の8日目の記事で、触れられなかった多相なエフェクトについてです。 一瞬出てきた多相なエフェクトの例を見てみましょう
...
Algebraic Effectsの型システム入門
はじめに Algebraic Effectsは計算エフェクトを扱う言語機能である。エフェクトとハンドラから成り、エフェクトの発生をハンドラが捕捉し、なんらかの値を返してエフェクト発生部分からの計算を
...
Better JSON types in TypeScript
This is a post on how to abuse TypeScript’s type system to write safer code.
...
The unsafe side
I like Haskell and Purescript, and I love telling people how safe they are. However, they are not perfect, there are still unsafe aspects and I have to be honest about them. "If it compiles, it works" isn't always true.
...
Type safer
I was chatting with friends about types. It seems that "type" means so many different things in different programming languages, "type safe" does not really mean anything without context. So here is this blog post, of me trying to explain what do I think about types, and how it helps us to program.
...
Type Level Permission Checking
Few days ago I was working on some API handlers in our server written in Haskell with the framework Yesod. There was a mistake, some secret data was accessible to normal users because we forgot to check the user's type, luckily it's not on production yet.
...
TemplateHaskellでコード中にJSONを埋め込んだりコンパイル時にファイルから型安全に読み込んだりする
前回よりはもう少し実用的な例を.Template Haskell を使って,Haskell のコード中に JSON をそのまま埋め込むことができるようにする.また,あらかじめ用意しておいた JSON ファイルをコンパイル時に読み込み,指定したデータ型の値にする.
...
Type-level TypeScript
この記事は CAMPHOR- Advent Calendar 2017 の21日目の記事です.@ryota-ka です.普段は HERP という会社でリードエンジニアとして働いています.一昨日19日にサービスのティザーサイトを公開したばかりなので見てください.
...
結果に対する気づき
Result export type Success<T> = { ok: true, result: T, } export type Failure<E> = { ok: false, error: E, } export type Result<T, E> = | Success<T> | Failure<E>
...
今年一書いてよかった関数と型
modifyC modify関数を以下のように定義する function modify<T extends object, K extends keyof T>(key: K, f: (old: T[K]) => T[K], struct: T): T オブジェクトのキーとmapする関数を受け取って、キーに入っている値をMapする関数
...
TypeScript で少し快適に JavaScript を書こう
概要 TypeScript はね、よいよ。 はじめに JavaScript を書きたくない人間は多い。 なぜかといえばしんどいからである。 だけれども大人はお仕事をしているので、JavaScript で動く何らかを開発しないといけないことがある。