Máte v tom zmatek hoši od Haskellu. Andy tvrdí, že error má nedefinované chování a může skončit v nekonečné smyčce.
Ach jo.. to je zase zkratka v internetové diskuzi... nevím, jestli jsi měl někde vyčíslitelnost, ale v principu pokud částečně rekurzivní funkce buď vrátí hodnotu nebo ji nevrátí - což v podstatě znamená, že se zacyklí. To je samozřejmě z hlediska programování blbý, protože přece jenom to z hlediska debuggingu a vůbec třeba nějakého error recovery není pro programátory příjemné, tudíž v haskellu je možné zavolat "error", který to v rámci možností jakž takž deterministicky utne a vyhodí výjimku, kterou je možné i chytit a případně provést teda nějakou error recovery. Sémantika celého toho kusu kódu je: JE TO ROZBITÝ. Protože bottom je non-observable, tak pokud z toho, že ti tam vylítla ta výjimka usuzuješ cokoliv jiného než "je to rozbitý", tak to je chybně napsaný kód. Kromě toho, že to je prostě sémanticky blbě, tak čistě prakticky můžeš třeba dostat MemoryError, StackOverflow, nebo klidně nějakou asynchronní výjimku z nějakého jiného threadu (jakoukoliv).
Takže všechny ty tvoje příklady jsou blbě, protože to klidně v principu může napsat "Tímto číslem nelze dělit" v důsledku nějaké výjimky, a přitom to klidně dělitelné být může. Bavit se o tom, jestli odstranění/přidání XStrict rozbije chybný kód fakt nemá smysl, proto zněla otázka, jestli bys mohl postnout korektní kód.