module record 

// Запись — это группа упорядоченных именованных значений, 
// которая автоматически реализует операцию сравнения — в 
// самом буквальном смысле. Не нужно задумываться о том, 
// как происходит сравнение: через равенство ссылок или с 
// помощью пользовательского определения равенства между 
// двумя объектами. Записи — это значения, а значения можно 
// сравнивать. Они являются типами-произведениями, если 
// говорить на языке теории категорий. У них есть множество 
// применений, однако одно из самых очевидных — их можно 
// использовать в качестве POCO или POJO.

// used curly braces and semicolons to separate fields
type Message<'a> = { id: int; body: 'a }

// usage
let m: Message<string> = { id=1; body="hello" }
let m2 = { id=1; body=2 }
let m3 = { id=2; body=Some }