[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: another hat in the ring regarding Lua 5.2: static typing
- From: Tomas Guisasola Gorham <tomas@...>
- Date: Fri, 29 Feb 2008 09:09:10 -0300 (BRT)
On Fri, 29 Feb 2008, steve donovan wrote:
> On Thu, Feb 28, 2008 at 9:16 PM, Asko Kauppi <askok@dnainternet.net> wrote:
> > local function mydear( t :string_or_table, i :int, j :[int], n :
> > [number] )
> > : string, table, [int]
> > ...function body with returns...
> > end
>
> Nice notation! I was thinking about this general problem the other
> day: how does one explcitly specify type in a dynamic language? The
> idea was that types are objects, and one builds them up with
> expressions:
> string_or_table = choice(String,Table)
> string_or_nil = choice(String,Nil)
> Location = choice({X=Double,Y=Double},{Double,Double})
I like that syntax either, but I have some doubts :-)
Could you accept a proxy table instead of the real table?
How would you specify that? How would you specify properties of
objects? An example of what I am looking for is:
function get_status (db, id)
local cond = "id="..id.." AND estado_retorno is not null"
return db:select ("status", "processo", cond)()
end
How would you specify that you can call db's select?
I am not interested in the real type of db: it could be a userdata
or a table, and in this case it could have the field select or it
could have a metatable with a __index metamethod; also, the select
object could be a function or a "callable" object... How would you
manage that?
I am not sure if we should check the _type_ or the operations
we want. In my case, I only care about db.select being a callable
object. One might argue that I would have to check its arguments,
but I would delegate it for the call itself.
Regards,
Tomas