Rust Types - Taxonomy

By Nikita Bishonen

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! БСгодня я дСлюсь своими мыслями ΠΎ таксономии Ρ‚ΠΈΠΏΠΎΠ² Π² Раст. Π­Ρ‚ΠΎ пСрвая вСрсия таксономии ΠΈ поста, Π±ΡƒΠ΄Ρƒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ Π·Π° Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ ΠΏΠΎ Π΅Ρ‘ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ.

Ваксономия

Ваксоно́мия (ΠΎΡ‚ Π΄Ρ€.-Π³Ρ€Π΅Ρ‡. τάξις — строй, порядок ΠΈ Ξ½ΟŒΞΌΞΏΟ‚Β β€” Π·Π°ΠΊΠΎΠ½)Β β€” ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°Ρ… ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ классификации ΠΈ систСматизации слоТноорганизованных иСрархичСски соотносящихся сущностСй.

Π― Π·Π°Ρ…ΠΎΡ‚Π΅Π» ΡƒΠΊΡ€Π°ΡΠΈΡ‚ΡŒ свой ΠΊΠ°Π±ΠΈΠ½Π΅Ρ‚ графичСской ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠ΅ΠΉ "таксономии" систСмы Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, схоТСй с Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Раст. К соТалСнию ΠΌΠΎΠΈ поиски Π½Π΅ принСсли ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈ я Ρ€Π΅ΡˆΠΈΠ» ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ свою ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ ΠΈ дСлюсь Сю с Π²Π°ΠΌΠΈ Π² этой ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π’ΠΈΠΏΡ‹

Π’Π΅ΠΎΡ€ΠΈΠΈ

Π’Π΅ΠΎΡ€ΠΈΠΉ сущСствуСт мноТСство, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… обусловлСны историСй развития Π½Π°ΡƒΠΊΠΈ ΠΎ вычислСниях, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ тСорСтичСскоС обоснованиС. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρƒ ссылки Π½Π° Π΄Π²Π΅ популярныС Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈΠ· ΠΎΠ±Π΅ΠΈΡ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ:

Но Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ понимаю ΠΈΡ… со скрипом, Ρ‡Ρ‚ΠΎ ΡƒΠΆ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ способности ΠΈΡ… ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ.

HoTT

Π’Π΅ΠΎΡ€ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Раст

БобствСнно основным вопросом, ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ я искал - тСория Ρ‚ΠΈΠΏΠΎΠ² стоящая Π·Π° Раст ΠΈ Π΅Ρ‘ проСкция Π½Π° Ρ‚ΠΈΠΏΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΡ€ΠΈ написании ΠΊΠΎΠ΄Π° Π½Π° Раст. НС я ΠΎΠ΄ΠΈΠ½ задавался Ρ‚Π°ΠΊΠΈΠΌ вопросом: https://users.rust-lang.org/t/practical-intro-to-type-theory/18204/5 Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ нСбольшой Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° эту Ρ‚Π΅ΠΌΡƒ: https://av.tib.eu/media/52178 "ΠœΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ модСль": https://ia0.github.io/unsafe-mental-model/type-theory.html А Ρ‚Π°ΠΊΠΆΠ΅ интСрСсный пост: https://www.kurtlawrence.info/blog/category-theory-with-rust-pt1 Но всС ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡƒΠΊΠ² ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ "Π²ΡΠ΅ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅Π³ΠΎ" Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ я повСсил Π΅Π³ΠΎ Π½Π° стСну.

Ваксономия Раст Π’ΠΈΠΏΠΎΠ²

Taxonomy

Π’ ΠΈΡ‚ΠΎΠ³Π΅ я, Π½Π° основании своих ΠΏΠΎΠ·Π½Π°Π½ΠΈΠΉ Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ, составил ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ таксономии. Π― ΠΎΡ‡Π΅Π½ΡŒ люблю ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π΅Ρ€Π΅Π²ΡŒΡ (особСнно Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅), для выстраивания ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΉ, ΠΌΠ½Π΅ каТСтся Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ Π»Π΅Π³Ρ‡Π΅ Π½Π°Π²ΠΈΠ³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΡ… ΡΡƒΡ‚ΡŒ. Π‘Π°ΠΌΠ° ΠΏΠΎ сСбС визуализация ΠΈ являСтся ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Ρ†Π΅Π»ΡŒΡŽ этой ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, Π½ΠΎ для ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ…ΡΡ ΠΈ Π½Π΅ΠΈΡΠΊΡƒΡˆΡ‘Π½Π½Ρ‹Ρ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ я ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ пояснСния ΠΈ ссылки Π½ΠΈΠΆΠ΅.

П-Ρ‚ΠΈΠΏ

Π’ΠΈΠΏ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½ΠΈ Π΄Π°Ρ‚ΡŒ, Π½ΠΈ Π²Π·ΡΡ‚ΡŒ. ΠœΡ‹ ΠΊΠΎΠΌΠΏΠ°Π½ΡƒΠ΅ΠΌ нСсколько Ρ‚ΠΈΠΏΠΎΠ² Π² ΠΎΠ΄ΠΈΠ½, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этих Ρ‚ΠΈΠΏΠΎΠ² ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠ΅ мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. КакиС Ρ‚ΠΈΠΏΡ‹ Π² Раст Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚?

Ξ£-Ρ‚ΠΈΠΏ

Π’ΠΈΠΏ-сумма Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ П-Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΈΠΏ-сумма Π΄Π°Ρ‘Ρ‚ Π±ΠΎΠ»Π΅Π΅ строгий ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π½Π°Π΄ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ значСниями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ².

Π’ΠΈΠΏΡ‹-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Раст ΠΈΠΌΠ΅Π΅Ρ‚ возмоТности для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, поэтому язык содСрТит Π² сСбС ΠΈ ссылки ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Нас ΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ "высокоуровнСвыС" ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹