Kdybych tam cpal čísla ze vstupu, musel bych si to ověření sudosti (prfX) vyrobit sám a předat ho explicitně.
Citace: Idris 07. 12. 2022, 01:58:43Kdybych tam cpal čísla ze vstupu, musel bych si to ověření sudosti (prfX) vyrobit sám a předat ho explicitně.Mohl by si mi ukázat, jak by to vypadalo?
total main : IO ()main = do Just n <- readNat | _ => putStrLn "not a natural number" let Yes _ = decIsEven n | _ => putStrLn "n isn't even" Just m <- readNat | _ => putStrLn "not a natural number" let Yes _ = decIsEven m | _ => putStrLn "m isn't even" putStrLn $ "Hello: " ++ (show (sumx n m))
co sa da aj v tej heitovanej jave, ci C#
poradia so vstupmy od pouzivatela, ci ineho systemu, kde moze prist akakolvek blbost.
Tak se předveď, ne?
Na tuto otázku tu již byla odpověď.
Kód: [Vybrat]total main : IO ()main = do Just n <- readNat | _ => putStrLn "not a natural number" let Yes _ = decIsEven n | _ => putStrLn "n isn't even" Just m <- readNat | _ => putStrLn "not a natural number" let Yes _ = decIsEven m | _ => putStrLn "m isn't even" putStrLn $ "Hello: " ++ (show (sumx n m))
Mna by tiez zaujimalo, ako si tieto super uzasne jazyky, ktore maju typ na parne cislo alebo neprazdny string (co sa da aj v tej heitovanej jave, ci C#) poradia so vstupmy od pouzivatela, ci ineho systemu, kde moze prist akakolvek blbost.
Můžu instanciovat Tc pro Foo?
Citace: Idris 07. 12. 2022, 08:37:12Kód: [Vybrat]total main : IO ()main = do Just n <- readNat | _ => putStrLn "not a natural number" let Yes _ = decIsEven n | _ => putStrLn "n isn't even" Just m <- readNat | _ => putStrLn "not a natural number" let Yes _ = decIsEven m | _ => putStrLn "m isn't even" putStrLn $ "Hello: " ++ (show (sumx n m))Tady by mě zajímalo, jaká jsou pravidla pro scoping té anonymní instance IsEven. Jak daleko může být od místa volání sumx, aby to kompilátor ještě našel / dosadil implicitní arg? Pokud by to bylo v externím kódu, muselo by se to třeba nějak importovat?
Citace: BoneFlute 07. 12. 2022, 10:44:34Tak se předveď, ne?Pomocou value objektu (co realne aspon v C# nemusi byt objekt). To hadam takym amchrom na typy vysvetlovat nemusim.
Citace: BoneFlute 07. 12. 2022, 10:44:34Na tuto otázku tu již byla odpověď.Mozes sem dat odkaz, lebo dost sa stracam v tejto diskusii, kedze sa tu hadate o milion veciach.
Citace: oss 07. 12. 2022, 08:04:08Mna by tiez zaujimalo, ako si tieto super uzasne jazyky, ktore maju typ na parne cislo alebo neprazdny string (co sa da aj v tej heitovanej jave, ci C#) poradia so vstupmy od pouzivatela, ci ineho systemu, kde moze prist akakolvek blbost.Úplně stejně... tu příchozí hodnotu naparsuješ/dekóduješ a výsledkem takový operace je buď ten správný typ, nebo chyba...
Citace: oss 07. 12. 2022, 10:54:40Citace: BoneFlute 07. 12. 2022, 10:44:34Tak se předveď, ne?Pomocou value objektu (co realne aspon v C# nemusi byt objekt). To hadam takym amchrom na typy vysvetlovat nemusim.Musíš. Protože tvrdím, že to nejde. Možná nechápeš zadání, a myslíš si, že když mi to vyhodí výjimku, že číslo není sudé, tak, že je splněno.
Citace: Králík 07. 12. 2022, 11:13:43Citace: oss 07. 12. 2022, 08:04:08Mna by tiez zaujimalo, ako si tieto super uzasne jazyky, ktore maju typ na parne cislo alebo neprazdny string (co sa da aj v tej heitovanej jave, ci C#) poradia so vstupmy od pouzivatela, ci ineho systemu, kde moze prist akakolvek blbost.Úplně stejně... tu příchozí hodnotu naparsuješ/dekóduješ a výsledkem takový operace je buď ten správný typ, nebo chyba...Vdaka za odpoved.No v tom pripade mi tieto hadky nad typovym systemom pridu dost zbytocne.
Citace: BoneFlute 07. 12. 2022, 11:35:40Citace: oss 07. 12. 2022, 10:54:40Citace: BoneFlute 07. 12. 2022, 10:44:34Tak se předveď, ne?Pomocou value objektu (co realne aspon v C# nemusi byt objekt). To hadam takym amchrom na typy vysvetlovat nemusim.Musíš. Protože tvrdím, že to nejde. Možná nechápeš zadání, a myslíš si, že když mi to vyhodí výjimku, že číslo není sudé, tak, že je splněno.Vid kralikovu odpoved.Trik je v tom, ze instancia daneho value objektu nemoze vzniknut pokial sa nejedna o pare cislo.
[TestMethod]public void Trik(){ var input = 3; var a = new Even(input); var res = Sum(a, new Even(2));}private Even Sum(Even a, Even b){}class Even{ private readonly int val; public Even(int val) { assertEven(val); this.val = val; }}
new Even(input);
let Yes _ = decIsEven n | _ => putStrLn "n isn't even"
Viem, kam smerujes, ale ked sa bavime o vstupoch od pouzivatela, tak:Kód: [Vybrat]new Even(input);Je ekvivalentne.Kód: [Vybrat]let Yes _ = decIsEven n | _ => putStrLn "n isn't even"