|Errors should be reported and propagated whenever possible
||Errors are ignored whenever execution can continue regardless of data integrity.
||Errors are reported and propagated whenever possible
|Tools should have consistent internal syntax and behavior
||Syntax is a patchwork from years of unguided development and backwards compatibility
||All of the library functions are designed and kept up to follow consistent internal syntax and behavior
|Function binding should be nestable to allow for more flexible composition
||BoundFuncs do not support the .Bind method
||Façade's BoundFuncs support the .Bind method
|Languages should discourage verbosity
||AutoHotkey favors backwards compatibility and C++-like syntax, requiring programmers to write more code to describe the same behavior and makes reading code difficult by limiting how much of it the programmer can see at once.
||Façade is less verbose than native AutoHotkey.
|Arrays should be 0-indexed
||AutoHotkey uses 1-indexed arrays to appeal to newcomers with less complex needs. It favors intuition for simple tasks over convenient behavior for more complex calculations.
||Façade provides functions that make array indexing unnecessary to consider for most common operations.
|Arrays should ensure index integrity by preventing missing/null elements
||AutoHotkey supports a single object type for both indexed and associative arrays allowing you to treat an object as either at any given time.
||Façade supports pure arrays that require only sequential integer keys, preventing any accidential crossing of the streams.
|Data should be immutable
||AutoHotkey's data structures are all very mutable, allowing for dynamic modification to the structure and increased flexibility at the cost of predictability
||Façade does not allow for mutable data structures.