Search the web
Sign In
New User? Sign Up
langsmiths · Language Smiths
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Hear how Yahoo! Groups has changed the lives of others. Take me there.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Duck typing and errors   Message List  
Reply | Forward Message #2741 of 2746 |
Re: [langsmiths] Re: Duck typing and errors


On 2009-06-23, at 8:25 AM, Brian Hurt wrote:
> Define "validly receive every message". The only thing you can
> validly do
> for *every* message is just throw an exception. Otherwise you have to
> either violate the contract and return something unexpected and
> wrong, or
> provide valid implementations for messages such as
> solveHaltingProblem,
> factorProductOfTwoLargePrimes, etc.

Suppose I have a object which can proxy any message across a network.
At compile time, the compiler has no way of knowing what the object on
the other side of the proxy can receive and therefore can infer
nothing about it's "type".

Steve



Wed Jun 24, 2009 12:58 am

stevedekorte
Offline Offline
Send Email Send Email

Forward
Message #2741 of 2746 |
Expand Messages Author Sort by Date

I've been working on my language again lately and playing around with argument type checking, protocols and multi-methods. I find it can be helpful to find...
Mike Austin
mike_ekim
Offline Send Email
May 4, 2009
8:35 pm

... I use Python which is also a duck typing language. In my experience the missing type check at the beginning of a function/method poses no big problems. You...
eike.welk
Offline Send Email
Jun 21, 2009
6:18 pm

... The other realm where lack of type chcking becomes problematic is where an instance variable gets populated with a object of the wrong type in the...
John Carter
refactored
Offline Send Email
Jun 21, 2009
11:38 pm

Hi all I don't think I have posted to this list, but I have some comments about Duck Typing and errors in Python code in particular. For background, I have a...
David Benn
dbennau
Offline Send Email
Jun 22, 2009
2:27 am

... I'll take this a step further and assert that: 1) If they're problems, they should be fixed even if they're not technically "bugs"- things are that...
Brian Hurt
bhurt42
Offline Send Email
Jun 23, 2009
2:28 am

... If type inference is done on the basis of messages that an object can receive, what happens when via message forwarding* every object can validly receive...
Steve Dekorte
stevedekorte
Offline Send Email
Jun 23, 2009
7:23 am

This is certainly true -- dynamic typing's strengths are more than just duck typing. Programatically extending types at runtime (a la Rails's ActiveRecord) and...
Robert Fischer
robert.fischer@...
Send Email
Jun 23, 2009
12:23 pm

... I think I'm going to argue that. Dynamic typing's main strengths are 1. Algol-68 type systems are exceeding limited and broken (and this was known in...
Brian Hurt
bhurt42
Offline Send Email
Jun 23, 2009
3:41 pm

... Static typing is inherently more restrictive than dynamic typing. That is, there are well-typed programs that any decidable static type system will reject....
John Cowan
johnwcowan
Online Now Send Email
Jun 23, 2009
4:15 pm

... By definition, yes. ... Not just performance. Actually, the performance advantage is minor at best- and can be offset by other things. For example, it's...
Brian Hurt
bhurt42
Offline Send Email
Jun 23, 2009
5:32 pm

This is an obvious case for polymorphism, so an object would provide its own to_sql implementation. If you didn't want to do that, the Groovy code could look...
Robert Fischer
robert.fischer@...
Send Email
Jun 23, 2009
5:43 pm

... So the question then becomes why did ActiveRecord go with monkey patching instead of this route? Note that this exact same solution also works nicely for...
Brian Hurt
bhurt42
Offline Send Email
Jun 23, 2009
5:56 pm

You misunderstand what's going on. An ActiveRecord class starts out life looking like this: class Foo < ActiveRecord::Base end That's it. It delegates the...
Robert Fischer
robert.fischer@...
Send Email
Jun 23, 2009
9:29 pm

... I think I actually disagree here. The top one is shorter, granted- but I don't think it's more readable. Or rather, I don't think it's more readable *in...
Brian Hurt
bhurt42
Offline Send Email
Jun 23, 2009
11:49 pm

This is a key culture difference between dynamic and static type communities -- static type communities want any tiny snippet of code to be obvious without...
Robert Fischer
robert.fischer@...
Send Email
Jun 23, 2009
11:59 pm

... The obvious point to make here being that the former is always better than the latter provided that all other things are equal. - John...
John Nowak
john@...
Send Email
Jun 24, 2009
12:24 am

... Without looking it up, can you tell me what the functions 'bind' and 'return' do? How about 'cata' or 'hylo'? Or 'appEndo'? Or 'runKleisli'? The...
John Nowak
john@...
Send Email
Jun 24, 2009
12:00 am

... How is that more "static-friendly"? Why not just offer a selection function that takes a list of items to use to descend the tree: select : List String ->...
John Nowak
john@...
Send Email
Jun 24, 2009
12:19 am

... That's a big advantage for supporting static typing, but not a big advantage for requiring it. Nor is it an advantage particular to static typing as...
John Cowan
johnwcowan
Online Now Send Email
Jun 23, 2009
9:29 pm

... The advantage to requiring it I've dealt with in another email. ... Any system of checked metadata about code is a type system. ... What's the advantage of...
Brian Hurt
bhurt42
Offline Send Email
Jun 23, 2009
11:39 pm

Not in direct reply, but I thought I'd chime in... I've been using MiniD for the last few months, which has a few features that languages like Python and Ruby...
Mike Austin
mike_ekim
Offline Send Email
Jun 24, 2009
1:14 am

That's the way Groovy works, too, and I'm a fan of that optional static typing. ~~ Robert. ... -- ~~ Robert Fischer, Smokejumper IT Consulting. Enfranchised...
Robert Fischer
robert.fischer@...
Send Email
Jun 24, 2009
2:06 am

... Objective-C does this as well. Personally, I would prefer protocol checking to type checking as any notion of type as it refers to a implementation (as it...
Steve Dekorte
stevedekorte
Offline Send Email
Jun 24, 2009
2:21 am

... Define "validly receive every message". The only thing you can validly do for *every* message is just throw an exception. Otherwise you have to either...
Brian Hurt
bhurt42
Offline Send Email
Jun 23, 2009
3:27 pm

Examples of things I can do if I accept any message: navigate an XML document, build a JSON object. ...
Robert Fischer
robert.fischer@...
Send Email
Jun 23, 2009
3:31 pm

... Suppose I have a object which can proxy any message across a network. At compile time, the compiler has no way of knowing what the object on the other side...
Steve Dekorte
stevedekorte
Offline Send Email
Jun 24, 2009
12:58 am
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help