# What does it mean if we disable K-rule in Agda?

## Someone

TL;DR: Can I say, "K-rule in Agda enables people to match $\forall a.a \equiv a$ with $refl$"? In https://agda.readthedocs.io/en/v2.5.4.1/language/without-k.html#without-k, K-rule is introduced as an implicit rule and it's defaultly enabled. If I understand it correctly, it means parameter of type $\forall a.a \equiv a$ can be matched with $refl$. If we disable K-rule, what will happen? What kind of codes is it going to prevent me writing? Because we can always construct $\forall a . a \equiv a$, even without K, we can always get an instance of $T$ by passing $refl$ to any functions with type $\forall a.a \equiv a \rightarrow T$. Agda's doc has given me an example which indeed shows a circumstance that can only work with K: agda K : {A : Set} {x : A} (P : x ≡ x → Set) → P refl → (x≡x : x ≡ x) → P x≡x K P p refl = p  In this code, if we can pattern match x≡x with refl, P refl can be trivially equivalent to P x≡x (but without K, we can't). So does that mean: "K enables people to match $\forall a.a \equiv a$ with $refl$"? I didn't find the answer on the Agda doc. If we disable K, will the semantic of Agda's equality type (CH-ISO) change? Source: https://cs.stackexchange.com/q/98339

# What's "this", really?

## Someone

Generally speaking, in object oriented programming languages, "this" is a keyword for referencing the object "itself". however, if I write in this way struct DDF { struct { int fantansy } dark; } deep; void makeFantansy(DDF *this, int value) { this->dark.fantansy = value; } What's the difference between this and "Classes" grammer~ga

# 为什么水区也有字数限制?

## Someone

> 错误: 回复至少要 10 个字符。 > 错误: 问题必须以问号结尾 # 水区应该随便水。