Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Function factories
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  Messages 1 - 25 of 44 - Collapse all  -  Translate all to Translated (View all originals)   Newer >
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Edward Rutherford  
View profile  
 More options Aug 21 2012, 4:36 pm
Newsgroups: comp.lang.c
From: Edward Rutherford <edward.p.rutherfor...@REMOVETHIS.gmail.com>
Date: Tue, 21 Aug 2012 20:36:31 +0000 (UTC)
Local: Tues, Aug 21 2012 4:36 pm
Subject: Function factories
Hello

I want to make a factory that produces other functions according to a
parameter.

The following code does not compile:

typedef int *(foo)(int);

foo adder_factory(int x)
{
  int f(int a)
  {
    return a + x;
  }
  return &f;

}

The idea is that adder_factor(42) should be a function that adds 42 to
whatever it gets passed.

What's the right way of doing this in C? How can I get closures or
something similar in C?


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nobody  
View profile  
 More options Aug 21 2012, 4:55 pm
Newsgroups: comp.lang.c
From: Nobody <nob...@nowhere.com>
Date: Tue, 21 Aug 2012 21:55:41 +0100
Local: Tues, Aug 21 2012 4:55 pm
Subject: Re: Function factories

C does not have inner functions or closures.

> The idea is that adder_factor(42) should be a function that adds 42 to
> whatever it gets passed.

> What's the right way of doing this in C? How can I get closures or
> something similar in C?

typedef struct foo {
    int (*func)(const struct foo *, int);
    int param;

} *foo;

static int adder(const struct foo *closure, int x) {
    return closure->param + x;

}

foo adder_factory(int x)
{
    foo p = malloc(sizeof(*p));
    p->func = adder;
    p->param = x;
    return p;

}

#define call_foo(f, x) ((f)->func((f), (x))

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
David Brown  
View profile  
 More options Aug 22 2012, 2:34 am
Newsgroups: comp.lang.c
From: David Brown <da...@westcontrol.removethisbit.com>
Date: Wed, 22 Aug 2012 08:34:52 +0200
Local: Wed, Aug 22 2012 2:34 am
Subject: Re: Function factories
On 21/08/2012 22:36, Edward Rutherford wrote:

You can't.

You can get sort-of simulated closures in complicated and verbose ways,
but there is no good way to do it.  gcc supports nested functions as an
extension to C, but that won't give you closures like this.

If you want to stick close to C, then C++11 supports lambda functions
and closures.

If you want to write code that makes strong use of closures in the
style, then use a programming language that supports it.  The latest C++
standard will get you the basics, but if you want to write code in a
more functional programming style, there are much better languages to
work with (ocaml, python, haskell, etc.)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nick Keighley  
View profile  
 More options Aug 22 2012, 4:52 am
Newsgroups: comp.lang.c
From: Nick Keighley <nick_keighley_nos...@hotmail.com>
Date: Wed, 22 Aug 2012 01:52:53 -0700 (PDT)
Local: Wed, Aug 22 2012 4:52 am
Subject: Re: Function factories
On Aug 22, 7:34 am, David Brown <da...@westcontrol.removethisbit.com>
wrote:

scheme

(and does Python have particularly good support for functional
programming?)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
David Brown  
View profile  
 More options Aug 22 2012, 5:34 am
Newsgroups: comp.lang.c
From: David Brown <da...@westcontrol.removethisbit.com>
Date: Wed, 22 Aug 2012 11:34:51 +0200
Local: Wed, Aug 22 2012 5:34 am
Subject: Re: Function factories
On 22/08/2012 10:52, Nick Keighley wrote:

Python has quite good support for functional programming styles, though
it is mainly a procedural / object oriented language.  You do get
closures, list comprehension, functions as first-class objects, and a
sort of lazy evaluation (through iterators).  It does not have pattern
matching in the way languages like Haskell have, which would have been nice.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jacob navia  
View profile  
 More options Aug 22 2012, 6:32 am
Newsgroups: comp.lang.c
From: jacob navia <ja...@spamsink.net>
Date: Wed, 22 Aug 2012 12:32:45 +0200
Local: Wed, Aug 22 2012 6:32 am
Subject: Re: Function factories
Le 21/08/12 22:36, Edward Rutherford a écrit :

If you have the JIT of lcc-win you write:

typedef int (*foo)(int);

foo adder_factory(int value)
{
        foo fnPtr;
        char buf[512];

        sprintf(buf,"int fn(int a) { return a + %d;}",value);
        fnPtr = (foo)compile(buf);
        return fnPtr;


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
tom st denis  
View profile  
 More options Aug 22 2012, 10:40 am
Newsgroups: comp.lang.c
From: tom st denis <t...@iahu.ca>
Date: Wed, 22 Aug 2012 07:40:01 -0700 (PDT)
Local: Wed, Aug 22 2012 10:40 am
Subject: Re: Function factories
On Aug 22, 6:32 am, jacob navia <ja...@spamsink.net> wrote:

You could accomplish similiar [though more longwinded] via compiling
code and using dlopen() to load it into your process space.

Both of which are completely OT for this group though.

BTW: your code doesn't seem to do any sort of error checking.  What if
compile() fails?

Tom


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Kuyper  
View profile  
 More options Aug 22 2012, 11:05 am
Newsgroups: comp.lang.c
From: James Kuyper <jameskuy...@verizon.net>
Date: Wed, 22 Aug 2012 11:05:47 -0400
Local: Wed, Aug 22 2012 11:05 am
Subject: Re: Function factories
On 08/22/2012 10:40 AM, tom st denis wrote:

The intent was for the definition of the adder to be contained inside
the definition of adder_factory().

> Both of which are completely OT for this group though.

> BTW: your code doesn't seem to do any sort of error checking.  What if
> compile() fails?

From the way it's used, it would appear to return a pointer. If
compile() fails, it might return a null pointer, in which case
adder_factory() will also return a null pointer, leaving it for the
caller to decide what to do about it. That's a perfectly reasonable way
of passing on the information that the call failed.

However, I think that compile() looks horribly type-unsafe.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edward Rutherford  
View profile  
 More options Aug 22 2012, 12:36 pm
Newsgroups: comp.lang.c
From: Edward Rutherford <edward.p.rutherfor...@REMOVETHIS.gmail.com>
Date: Wed, 22 Aug 2012 16:36:09 +0000 (UTC)
Local: Wed, Aug 22 2012 12:36 pm
Subject: Re: Function factories

Thanks for the suggestion. Unfortunately I need an actual function, not a
macro, to be able to pass as a comparator function to qsort.

Guess I just have to communicate what I need through a global variable?
It would be nice if qsort took an extra "void *data" parameter, like
functions in Glib (where it's called a gpointer of course)...


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Kuyper  
View profile  
 More options Aug 22 2012, 1:01 pm
Newsgroups: comp.lang.c
From: James Kuyper <jameskuy...@verizon.net>
Date: Wed, 22 Aug 2012 13:01:10 -0400
Local: Wed, Aug 22 2012 1:01 pm
Subject: Re: Function factories
On 08/22/2012 12:36 PM, Edward Rutherford wrote:

That's one alternative. However, you can avoid creating a global, with
all of the attendant problems. When used correctly, qsort() never calls
the comparison function with null pointers. You can take advantage of
that fact by making x a static variable local to the comparison
function, and if the first argument to that function is a null pointer,
interpret the second argument as a pointer to a new value for x.

> It would be nice if qsort took an extra "void *data" parameter, like
> functions in Glib (where it's called a gpointer of course)...

Yes. It's a well-known problem with all of the original C standard
library's callback functions. I think C11 has introduced some new
callbacks, but I haven't had time to learn much about them.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Edward Rutherford  
View profile  
 More options Aug 22 2012, 2:33 pm
Newsgroups: comp.lang.c
From: Edward Rutherford <edward.p.rutherfor...@REMOVETHIS.gmail.com>
Date: Wed, 22 Aug 2012 18:33:24 +0000 (UTC)
Local: Wed, Aug 22 2012 2:33 pm
Subject: Re: Function factories

That is very clever.

It does feel like a little bit of a hack to me, and I'd probably want to
comment what was going on quite carefully.

It also has the downside of introducing an extra branch instruction
(check against NULL) in a function that could be called many many times
in a sort.

Still, ingenious! Thanks.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Kuyper  
View profile  
 More options Aug 22 2012, 10:26 pm
Newsgroups: comp.lang.c
From: James Kuyper <jameskuy...@verizon.net>
Date: Wed, 22 Aug 2012 22:26:44 -0400
Local: Wed, Aug 22 2012 10:26 pm
Subject: Re: Function factories
On 08/22/2012 01:01 PM, James Kuyper wrote:

> On 08/22/2012 12:36 PM, Edward Rutherford wrote:
...
>> It would be nice if qsort took an extra "void *data" parameter, like
>> functions in Glib (where it's called a gpointer of course)...

> Yes. It's a well-known problem with all of the original C standard
> library's callback functions. I think C11 has introduced some new
> callbacks, but I haven't had time to learn much about them.

The new callback function is the one passed to
set_constraint_handler_s(). You cannot pass set_constraint_handler_s() a
corresponding  void*data to be passed to the constraint handler when it
is called, so it looks like the committee has opted for consistency with
previous callback functions, rather than more flexible functionality.

constraint_handler_t functions take a second argument that is a void*,
but it is either null or points at an implementation-defined object,
which means that portable code can't do anything more useful with that
pointer than reporting whether or not it's null (which isn't
spectacularly useful).
--
James Kuyper


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jacob navia  
View profile  
 More options Aug 23 2012, 5:08 am
Newsgroups: comp.lang.c
From: jacob navia <ja...@spamsink.net>
Date: Thu, 23 Aug 2012 11:08:09 +0200
Local: Thurs, Aug 23 2012 5:08 am
Subject: Re: Function factories
Le 22/08/12 17:05, James Kuyper a crit :

By convention it returns a pointer to the first function it finds.
This is highly dependent on the application and customer setup.

Some customers want to have a "main" function that starts the thing.
In that case the JIT will return a pointer to that function. Others
will put the main function at the start of the file and the Jit returns
a function to the first function it compiles.

In case of error (syntax error, no more memory, whatever catastrophe
occurs), it returns NULL. Diagnostics are printed in stderr, whatever
that is. In most applications stderr is a pipe connected to some
file.

Obviously in most applications the code buffer is machine generated.
It could be however that it is used as a C interpreter.

The resulting code is dynamically linked to the running program. There
is no preprocessor.

> If
> compile() fails, it might return a null pointer, in which case
> adder_factory() will also return a null pointer, leaving it for the
> caller to decide what to do about it. That's a perfectly reasonable way
> of passing on the information that the call failed.

> However, I think that compile() looks horribly type-unsafe.

In a sense yes, since it can return a pointer to ANY kind of function
by definition... It is up to you to cast the result pointer into
the right stuff. I do not see how to improve that without destroying
the generality of the program.

But we are used to it. fread() will read ANY kind of stuff into its
buffer, it is up to you to interpret the data correctly.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Chicken McNuggets  
View profile  
 More options Aug 23 2012, 8:27 am
Newsgroups: comp.lang.c
From: Chicken McNuggets <chic...@mcnuggets.com>
Date: Thu, 23 Aug 2012 13:27:07 +0100
Local: Thurs, Aug 23 2012 8:27 am
Subject: Re: Function factories
On 22/08/2012 16:05, James Kuyper wrote:

> However, I think that compile() looks horribly type-unsafe.

Type safety in C? That's a novel concept :).

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Kuyper  
View profile  
 More options Aug 23 2012, 11:13 am
Newsgroups: comp.lang.c
From: James Kuyper <jameskuy...@verizon.net>
Date: Thu, 23 Aug 2012 11:13:54 -0400
Local: Thurs, Aug 23 2012 11:13 am
Subject: Re: Function factories
On 08/23/2012 08:27 AM, Chicken McNuggets wrote:

> On 22/08/2012 16:05, James Kuyper wrote:

>> However, I think that compile() looks horribly type-unsafe.

> Type safety in C? That's a novel concept :).

Is it? Try compiling the following code:

int main(void)
{
        double d;
        int *pi = &d;
        return 0;


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Heinrich Wolf  
View profile  
 More options Aug 23 2012, 12:18 pm
Newsgroups: comp.lang.c
From: "Heinrich Wolf" <inva...@invalid.invalid>
Date: Thu, 23 Aug 2012 18:18:58 +0200
Local: Thurs, Aug 23 2012 12:18 pm
Subject: Re: Function factories

"James Kuyper" <jameskuy...@verizon.net> schrieb im Newsbeitrag
news:503648B2.5000200@verizon.net...
...

>> Type safety in C? That's a novel concept :).

> Is it? Try compiling the following code:

> int main(void)
> {
> double d;
> int *pi = &d;
> return 0;
> }

It compiles! On both Turbo C 2.0 and Borland C++Builder 5.

There are just 2 warnings:

Warning J:\C\TURBO2\NONAME.C 4: Suspicious pointer conversion in function
main
Warning J:\C\TURBO2\NONAME.C 6: 'pi' is assigned a value which is never used
in function main

Pascal is said to be more type safe. But I am astonished: Delphi 5 does not
issue a warning at all, just a hint:

program TypeSafe;
{$APPTYPE CONSOLE}

var d  : double;
    pi : ^integer;
begin
  pi       := @d;
  exitcode := 0;
end.

[Hint] TypeSafe.dpr(7): 'pi' is assigned a value which is never used

Heiner


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Anand Hariharan  
View profile  
 More options Aug 23 2012, 12:29 pm
Newsgroups: comp.lang.c
From: Anand Hariharan <mailto.anand.hariha...@gmail.com>
Date: Thu, 23 Aug 2012 09:29:55 -0700 (PDT)
Local: Thurs, Aug 23 2012 12:29 pm
Subject: Re: Function factories
On Aug 23, 10:13 am, James Kuyper <jameskuy...@verizon.net> wrote:

One additional line (that doesn't involve any casts) is sufficient -

int main(void)
{
    double d;
    void *pv = &d;
    int *pi = pv;
    return 0;

}

$ gcc -W -Wall -ansi -pedantic foo.c
foo.c: In function ‘main’:
foo.c:6:10: warning: unused variable ‘pi’

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Kuyper  
View profile  
 More options Aug 23 2012, 12:40 pm
Newsgroups: comp.lang.c
From: James Kuyper <jameskuy...@verizon.net>
Date: Thu, 23 Aug 2012 12:40:04 -0400
Local: Thurs, Aug 23 2012 12:40 pm
Subject: Re: Function factories
On 08/23/2012 12:18 PM, Heinrich Wolf wrote:

The most that the C standard ever requires an implementation to do when
processing a program that has any kind of defect is to produce at least
one diagnostic message, contents unspecified; whether it then continues
to generate an executable is entirely up to the implementation. This is
one such case, a constraint violation (6.5.16.1p1). Any implementation
for which this program fails to produce at least one diagnostic is
non-conforming.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Kuyper  
View profile  
 More options Aug 23 2012, 12:40 pm
Newsgroups: comp.lang.c
From: James Kuyper <jameskuy...@verizon.net>
Date: Thu, 23 Aug 2012 12:40:23 -0400
Local: Thurs, Aug 23 2012 12:40 pm
Subject: Re: Function factories
On 08/23/2012 12:18 PM, Heinrich Wolf wrote:

The most that the C standard ever requires an implementation to do when
processing a program that has any kind of defect is to produce at least
one diagnostic message, contents unspecified; whether it then continues
to generate an executable is entirely up to the implementation. This is
one such case, a constraint violation (6.5.16.1p1). Any implementation
for which this program fails to produce at least one diagnostic is
non-conforming.

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jacob navia  
View profile  
 More options Aug 23 2012, 12:44 pm
Newsgroups: comp.lang.c
From: jacob navia <ja...@spamsink.net>
Date: Thu, 23 Aug 2012 18:44:39 +0200
Local: Thurs, Aug 23 2012 12:44 pm
Subject: Re: Function factories
Le 23/08/12 18:29, Anand Hariharan a crit :

C allows you to interpret ANY part of memory as something else if you
(as you have shown) are careful to avoid the built-in barriers of the
language.

Interpreting doubles as integers is very useful if you want to test
some bits or manipulate some bits of the binary representation without
going through expensive floating point operations. The whole Sun math
library is built using this kind of code, and you can do that in C since
it is a language that doesn't IMPOSE anything to the programmer, like
C#, C++ or Cwhatever.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Kuyper  
View profile  
 More options Aug 23 2012, 12:46 pm
Newsgroups: comp.lang.c
From: James Kuyper <jameskuy...@verizon.net>
Date: Thu, 23 Aug 2012 12:46:29 -0400
Local: Thurs, Aug 23 2012 12:46 pm
Subject: Re: Function factories
On 08/23/2012 12:29 PM, Anand Hariharan wrote:

Sure, C's support of type safety is weak, and easily circumvented. But
it's not non-existent, as implied by Chicken's first comment above. I've
used several languages with substantially less type safety; mostly ones
where type mismatches are not detected until something blows up at run
time. I greatly prefer catching them at compile time (a concept which
doesn't even apply to some of those languages).

 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Chicken McNuggets  
View profile  
 More options Aug 23 2012, 1:02 pm
Newsgroups: comp.lang.c
From: Chicken McNuggets <chic...@mcnuggets.com>
Date: Thu, 23 Aug 2012 18:02:07 +0100
Local: Thurs, Aug 23 2012 1:02 pm
Subject: Re: Function factories
On 23/08/2012 16:13, James Kuyper wrote:

Yes. It compiles with a warning as expected. Not a great example of type
safety.

This code on the other hand compiles with no warnings:

#include <stdlib.h>

int main(void)
{
        int *ptr = (int*) malloc(sizeof(long));
        *ptr = 10;
        short blah = *ptr;
        free(ptr);
        exit(EXIT_SUCCESS);

}

so please explain how C is a type safe language?

The fact that malloc() returns a void pointer that can be cast to any
type destroys any type safety C may have.

Try Haskell for a real type safe language.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jacob navia  
View profile  
 More options Aug 23 2012, 1:24 pm
Newsgroups: comp.lang.c
From: jacob navia <ja...@spamsink.net>
Date: Thu, 23 Aug 2012 19:24:06 +0200
Local: Thurs, Aug 23 2012 1:24 pm
Subject: Re: Function factories
Le 23/08/12 19:02, Chicken McNuggets a crit :

Because you can assign a 64 bit integer into a short. If there is an
overflow the behavior is undefined but it can't be any overflow in your
example since 10 will fit into a short.

What is the problem?

> The fact that malloc() returns a void pointer that can be cast to any
> type destroys any type safety C may have.

> Try Haskell for a real type safe language.

OK
Lets suppose I have a double precision number and that I want to reset
the sign bit without doing any expensive floating point operations.

How do I do that in Haskell?


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
James Kuyper  
View profile  
 More options Aug 23 2012, 1:35 pm
Newsgroups: comp.lang.c
From: James Kuyper <jameskuy...@verizon.net>
Date: Thu, 23 Aug 2012 13:35:40 -0400
Local: Thurs, Aug 23 2012 1:35 pm
Subject: Re: Function factories
On 08/23/2012 01:02 PM, Chicken McNuggets wrote:

It's a lot better than it would be if no warning were mandated. An
implementation is free to reject such code - whether or not it actually
does so is a matter of QoI, outside the scope of the standard.

> This code on the other hand compiles with no warnings:

> #include <stdlib.h>

> int main(void)
> {
>    int *ptr = (int*) malloc(sizeof(long));
>    *ptr = 10;
>    short blah = *ptr;
>    free(ptr);
>    exit(EXIT_SUCCESS);
> }

> so please explain how C is a type safe language?

Type safety is not an absolute yes or no issue. Some languages have more
type safety than others. C has static type checking - in many different
contexts, a diagnostic is mandatory if different types are not
compatible. Implicit conversions are often safe conversions, the most
dangerous type conversions are required to be explicit (except those
pointer conversions which can be done using void* as an intermediate
type). There's plenty of room for improvement in C's type safety, but
it's still a lot better than having no type checking, or deferring type
checking until run-time (both of which I've seen in other languages).

> The fact that malloc() returns a void pointer that can be cast to any
> type destroys any type safety C may have.

No, it doesn't. It just adds another type-unsafe mechanism to a language
that has only a moderate amount of type safety without it.

lcc-win32's compile() looks to me like it compromises type safety much
more than malloc() does, which is what prompted my original comment. A
pointer to a function that might point have the wrong function type
seems much more serious to me than a pointer to an object that might
have the wrong object type; there's a larger variety of ways you can
have a mis-match, and a correspondingly larger number of different
failure modes available. It's not good, either way.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jacob navia  
View profile  
 More options Aug 23 2012, 2:13 pm
Newsgroups: comp.lang.c
From: jacob navia <ja...@spamsink.net>
Date: Thu, 23 Aug 2012 20:13:27 +0200
Local: Thurs, Aug 23 2012 2:13 pm
Subject: Re: Function factories
Le 23/08/12 19:35, James Kuyper a crit :

> lcc-win32's compile() looks to me like it compromises type safety much
> more than malloc() does, which is what prompted my original comment. A
> pointer to a function that might point have the wrong function type
> seems much more serious to me than a pointer to an object that might
> have the wrong object type; there's a larger variety of ways you can
> have a mis-match, and a correspondingly larger number of different
> failure modes available. It's not good, either way.

But how can "compile()" know what type of function you are going to define?

There is absolutely NO WAY to change this fact. But of course if you
have one solution please let me know...


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Messages 1 - 25 of 44   Newer >
« Back to Discussions « Newer topic     Older topic »