# \#semantic

**URL:** https://discuss.ocaml.org/tag/semantic/43.md

[Latest](https://discuss.ocaml.org/latest.md) · [Categories](https://discuss.ocaml.org/categories.md) · [Tags](https://discuss.ocaml.org/tags.md)

---

## [Monadic type checker and top level declarations](https://discuss.ocaml.org/t/monadic-type-checker-and-top-level-declarations/12633)

<div class="topic-metadata">

**Author:** [@Ben\_James](https://discuss.ocaml.org/u/Ben_James)\
**Replies:** 2\
**Last updated:** [July 17, 2023, 9:56pm UTC](https://discuss.ocaml.org/t/monadic-type-checker-and-top-level-declarations/12633 "2023-07-17T21:56:43Z")

</div>

I am currently writing a compiler in Ocaml for a Haskell-ish language using monads (I have my own implementation) for learning purposes. My question is focused around on the semantics behind monads and monad transformers…

---

## [List operation a += b, a = a+b is different in Python](https://discuss.ocaml.org/t/list-operation-a-b-a-a-b-is-different-in-python/473)

<div class="topic-metadata">

**Author:** [@liweijian](https://discuss.ocaml.org/u/liweijian)\
**Replies:** 3\
**Last updated:** [June 28, 2017, 9:23pm UTC](https://discuss.ocaml.org/t/list-operation-a-b-a-a-b-is-different-in-python/473 "2017-06-28T21:23:08Z")

</div>

I just found this interesting feature of Python list operation: In \[1\]: a1 = range(3) In \[2\]: a2 = a1 In \[3\]: a2 += \[3\] In \[4\]: a1 Out\[4\]: \[0, 1, 2, 3\] In \[5\]: a2 Out\[5\]: \[0, 1, 2, 3\] When we use +=, the value of…
