Size: a a a

2021 May 26

B

Börgar in rust_offtopic
а, а надо рантайм?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
а идрис будет требовать чтобы ты перед тем как её вызывать проверил, что они равны. При этом число может быть рантаймовое
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
там с консоли считывается число если не заметил)
источник

B

Börgar in rust_offtopic
а, ну да
источник

AN

Alex Noname in rust_offtopic
а если сделать :t b то что выведет?
источник

AN

Alex Noname in rust_offtopic
или как там
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Int
источник

B

Börgar in rust_offtopic
так стоп, Result<Nonzero<T>, Zero<T>>
источник

TK

Traveller Kolsky in rust_offtopic
Интересно, что в рантайме неявно навешан предикат, исходя из ветви исполнения
источник

TK

Traveller Kolsky in rust_offtopic
(или всё-таки в комптайме)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
в компайл тайм
источник

AN

Alex Noname in rust_offtopic
if (x !== null) из тайпскрипта. Но там просто сахарок для конкретных кейсов.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
компилятор неявно генерирует

runtimeDiv : IO ()
runtimeDiv = do
   aStr <- getLine
   let a = the Int (cast aStr)
   bStr <- getLine
   let b = the Int (cast aStr)
   case decEq b 0 of
       (Yes prf) => putStrLn "Cannot divide by zero"
       (No contra) => print $ div a b
{contra}
источник

B

Börgar in rust_offtopic
или читерство
источник

AN

Alex Noname in rust_offtopic
аа ну вот. а что такое contra?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Not (prf)
источник

AN

Alex Noname in rust_offtopic
а я могу руками ее создать?
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
див у нас имеет вид

div : Int -> (b : Int) -> {auto p: Not (b = 0)} -> Int
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
можешь)
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
decEq это и делает
источник