lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


There is only one incompatibility listed in the Lua 5.4 (work2) manuall.

> The coercion of strings to numbers in arithmetic and bitwise operations has been removed from the core language. The string library does a similar job for arithmetic (but not for bitwise) operations using the string metamethods. However, unlike in previous versions, the new implementation preserves the implicit type of the numeral in the string. For instance, the result of "1" + "2" now is an integer, not a float.

If backward compatibility of coercion arithmetic is not desired, these
metamethods could be replaed to give arbitrary-precision arithmetic.

For example:

$ sudo luarocks install lbc
$ lua5.4 -l bc
Lua 5.4.0  Copyright (C) 1994-2017 Lua.org, PUC-Rio
    meta = getmetatable''
    for k,v in pairs(bc) do
      if k~='__index' then meta[k] = bc[k] end
    end
    function fermat(n)
      if n==0 then return '3'
      else return (fermat(n-1)-1)^2+1
      end
    end
    fermat(7)
340282366920938463463374607431768211457