Perl 6 - the future is here, just unevenly distributed

IRC log for #divine, 2015-09-14

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:48 ilbot3 joined #divine
01:48 Topic for #divine is now DIVINE: A Parallel LTL Model Checker (http://divine.fi.muni.cz) | http://irclog.perlgeek.de/divine/
15:05 mornfall podporujem nějakej překladač co neumí generic lambdy?
15:06 xstill asi gcc 4.7, ale myslím že next by mohl přejít na c++14 možná i
15:06 mornfall ono to bez toho možná totiž nepůjde
15:06 xstill 4.7 je stejně bugovatý až kam
15:07 xstill když přejdeš na c++14 tak budu mít radost… jen teda v cmake budeš muset zdetekovat jestli je flag 1y nebo 14, protože gcc 4.8 ještě -std=c++14 nemá
15:07 mornfall jo to je asi nejmíň
15:08 mornfall já musim teda zjistit jestli mi to pomůže prvně
15:08 xstill ono pak můžeš mít problém s tím ukazatelem na operator()
15:08 xstill možná
15:08 xstill nic jako pointr na šablonu tuším neexistuje
15:08 mornfall z principu nemůže existovat
15:09 mornfall ale tam to cpát nebudem
15:09 xstill a kde to potřebuješ?
15:09 mornfall přepisuju interpret
15:09 mornfall protože s tím 5-árním cmpxchg to nepřeložím
15:10 xstill jakto že je najednou 5ární? (jak se to vlastně řekne slovem??)
15:10 mornfall no 2 returny a 3 parametry
15:10 xstill to není struktura, nebo tak něco, ten return?
15:11 xstill hm… vlastně langref asi ví
15:11 mornfall jestli ti přijde lepší generovat instance operací pro všech nekonečně moc agregátů ...
15:12 xstill
15:12 mornfall jsem si myslel :P
15:13 mornfall (on je typ výsledku aj parametrů runtime informace a veškerý trampoty vznikaj z nutnosti to nějak namatchovat na statickej kód)
15:15 mornfall navíc bych byl rád kdyby se na každým kusu informace dispatchovalo jenom jednou
15:15 mornfall tzn. ne prvně opcode, podle toho vykoumat typy a pak zase opcode
15:24 xstill mornfall: a kdy bude ten certifikát?
15:26 mornfall kruci
15:26 xstill a já zas zapomněl podepsat smlouvu, achjo
16:30 mornfall hm, return type dedukce ruší reference, to je trochu zrádné
16:31 xstill nefunguje auto& ?
16:32 mornfall jako ... -> auto& je trochu divný :D
16:32 xstill případně decltype(auto) fn() by mělo fungovat v c++14 a zachovávat reference tuším
16:32 xstill ale nevím jistě
16:32 mornfall ale možná lepší než to vyjmenovávat
16:33 xstill auto & fn() -> … není o moc divnější než auto &x : xs
16:33 mornfall no, syntax error to asi není, tak to tak nechám
16:33 mornfall []( ... ) -> auto&
16:33 xstill wat
16:34 xstill to fakt jde?
16:34 mornfall no clang to vzal
16:35 mornfall a dělá to co to dělat má
16:36 mornfall trochu horší je že asi neumim vymýtit vadný instance lambd
16:36 mornfall v decltype( x( y ) ) to projde, ale x( y ) je type error uvnitř x
16:37 xstill jakože sfinae lambda?
16:37 mornfall aha ne on to vyfuckuje rovnou ten decltype ale jako error ne jako sfinae
16:37 mornfall /home/mornfall/src/divine/next/divine/llvm/execution.h:670:41)>' requested here
16:37 mornfall -> decltype( _op( get ) )
16:38 mornfall execution.h:1298:68: error: invalid operands to binary expression
16:38 xstill hm, cppreference nijak nenaznačuje že by -> auto& šlo, ale gcc 5.2 to zvládne taky
16:40 xstill ten error nedává moc smysl, ne?
16:41 mornfall těžko říct, já bych to bral jako chybu substituce, ale zdá se že ona není
16:41 mornfall možná proto že ta substituce selhává v template Op::operator() a ne v něčem přímo závislým na parametrech té fce
16:43 xstill a jseš si jistej, že _op( get ) je ve scope?
16:43 mornfall jo, jinde to funguje
16:43 xstill jako v decltype?
16:44 mornfall jako že když zakomentuju ty typy pro který to hází invalid operands tak se to přeloží
16:44 xstill aha
16:50 xstill zajímavý http://pastebin.dqd.cz/TI4J/ funguje
16:51 xstill clang aj gcc
16:52 mornfall jo ale u mě je _op parametr typu Op a to je lambda (která pro některé typy parametru nejde instanciovat)
16:53 mornfall navíc bere jako parametr zase lambdu, aby toho nebylo málo
16:54 mornfall type error je v těle _op (podle toho jaký se mu dosadí parametr)
16:54 xstill _op je jako auto parametr, nebo něco jinýho? a co ten get?
16:54 mornfall něco jako _op = []( auto x ) { return x + x; }
16:54 mornfall eh
16:54 mornfall _op = []( auto x ) { return x( 0 ) + x( 1 ); }
16:55 mornfall get = []( int ) -> int { return 1; }
16:55 mornfall ale když mám get kterej vrací něco co nejde sčítat
16:55 mornfall tak decltype( _op( get ) ) vyhodí chybu
16:57 xstill a co ta lambda v který je ten decltype( _op( get ) ) bere?
16:57 mornfall _op a get jsou parametry (není to lambda, je to normální member function template)
16:58 mornfall auto op( Op _op, Get get )
16:58 xstill s template< typename Op, typename Get >?
16:59 mornfall ano
16:59 mornfall -> decltype( _op( get ) )
17:00 mornfall když místo get hodím function pointer s odpovídajícím return typem udělá to to samé
17:01 xstill pastni mi to někam
17:07 mornfall http://lpaste.net/140975
17:11 xstill ovšem http://lpaste.net/140976 funguje (asi proto, že aby se dal zjistit return typ, musí se ta lambda přeložit -> bum
17:12 mornfall hm, to je ovšem dost trapný
17:13 xstill tak, zas kdyby to automaticky dělalo sfinae z return-u, tak by to bylo trochu divný (a asi by to nedávalo smysl, když jich máš víc)
17:14 mornfall ale to není problém returnu, si ho oddělej
17:14 mornfall i když to je jen { x( 0 ) + x( 1 ); }
17:14 mornfall tak to zhebne stejně
17:15 mornfall hm
17:15 mornfall ale s -> void to funguje
17:15 xstill jasně, pointa je v tom, že pokud to nemá typ tak se musí odvodit, což v C++14 znamená podívat se do těla, těžko říct co na to přesně standard
17:15 xstill jak to může s -> void fungovat?
17:15 mornfall já si neuvědomil že { x; } je to stejný jako { return x; }
17:15 mornfall v lambdě
17:15 xstill cože?!
17:16 mornfall to dělá nějaký wtf zase
17:18 mornfall nojo, on to totiž úplně oddělal když to nemělo side-effect
17:18 mornfall prostě si to prvně smaže x( 1 ) + x( 2 ) a pak nemá problém :P
17:18 mornfall aha
17:18 mornfall ne
17:19 mornfall on ten decltype totiž bude void bez ohledu na to co je v těle
17:19 mornfall takže se to do těla ani nepodívá a nevšimne si že to nedává smysl
17:31 mornfall http://lpaste.net/140977 za tohle asi půjdu do pekla co?
17:33 xstill to asi jo, nechápu úplně co tam dělá to y…
17:33 mornfall no tam přijde třeba { if ( !get( 2 ) ) ccontext.problem( Problem::DivisionByZero ); }
17:34 xstill fuj
17:34 xstill a vstřebá to vůbec preprocesor?
17:34 mornfall ale jistě
17:34 mornfall funguje to dobře
17:35 mornfall ale možná tam radši napíšu nějaký decltype( get( 0 ) + 0 ) všude
17:43 xstill to bude vypada líp podle mě
18:09 mornfall no, furt je ten lambdovej boilerplate delší než tělo
18:09 mornfall je to dost marný
18:36 xstill mornfall: myslíš, že bys mi mohl zkontrolovat krátký anglický text abych ze sebe neudělal blbce před zahraničníma studentama?
18:38 xstill případně https://paradise.fi.muni.cz/~xstill/tmp/bludiste_en_poster.pdf
18:45 mornfall move bere direct object
18:45 xstill takže "move the top magnet" místo "move with…"?
18:46 mornfall j
18:47 xstill dík

| Channels | #divine index | Today | | Search | Google Search | Plain-Text | summary