Bár már korábban azt hittem, többet nem szólok hozzá, de azért mégis .-)
...és meg is mutattam a cikkben, hogy az int könnyen lekorlátozható egy olyan adatszerkezetre, amiben nincs benne minden int érték (NotZeroInt). Ezáltal az összes bemenetre ad vissza outputot a függvény...
Azt hiszem, még mindig elsikkadt valami. Ahhoz, hogy (pl. egy egészeken, vagy azok részhalmazán értelmezett) "gépi függvény" adott inputra értelmezve legyen (vagyis "rendes" számértéket adjon vissza) 2 dolog szükséges:
1) az input benne legyen az értelmezési tartomány azon leszűkített részében, amin (azt gondoljuk, hogy :-) már totális a függvényünk, tehát biztosan értelmezve van
2) Úgy legyen megírva a függvényt kiszámító kód, hogy ilyen értékekre valóban ki tudjon számolni valami értelmes értéket, futása közben ne léphessen föl semmi kivételes állapot.
Néha az első, néha a második teljesítése a bonyolultabb.
Egy filozófiai kérdés: ha egy (pl. bonyolult rekurziókkal definiált) függvény adott inputra timeout-tal elszáll, akkor ott vajon definiálva van-e?
Például a Fibonacci sorozat rekurzív és nem rekurzív implementációi ugyanazt a függvényt definiálják-e?
A matematikai képlettel megadott függvény és az adott nyelven leprogramozott, a képlettel látszólag ekvivalens kódból álló "gépi függvény" a triviális esetektől eltekintve
- különböző értelmezési tartományú
- különböző értékkészletű és
- sok, még gépi számként pontosan megadható input esetén is eltérő értékeket ad vissza.