Quoting Bakul Shah (2019-01-02 03:07:14)
> On Tue, 01 Jan 2019 22:56:06 -0800 Ian Lance Taylor <[email protected]> wrote:
> > On Tue, Jan 1, 2019 at 6:42 PM Bakul Shah <[email protected]> wrote:
> > >
> > > On Tue, 01 Jan 2019 03:34:34 -0800 =?UTF-8?B?5LyK6Jek5ZKM5Lmf?=
> > > <[email protected]> wrote:
> > > >
> > > > What are the reasonable reasons to use pointers? Are pointers neseccary?
> > >
> > > Pointers are not necessary as a programming language feature
> > > but are necessary in implementing a programming language. As
> > > an example, Scheme doesn't have pointers.
> >
> > Scheme doesn't have pointers in the same sense that Java doesn't have
> > pointers: in both Scheme and Java all non-primitive types are
> > represented using pointers. So while it's true that the languages
> > don't have pointers, you still have to understand that you are always
> > dealing with reference types.
>
> True but I'd rather keep pointers seperate from shared state.
> There are other languages such as k that do pass compound
> objects by value. Thus in k
>
> x:1 2 3 4
> f:{[v]v[1]:5} // similar to (define (f v) (vector-set! v 1 5))
> f x
>
> does *not* modify x. [It does this by using copy-on-write]
Immutability also makes the abstraction less leaky; If you never mutate
(and ignore nils) then the difference between:
struct { int x; Foo y }
and:
struct { int x; Foo *y }
May have performance implications, but is ultimately an implementation
detail. A compiler could even attempt to optimize based on e.g. the size
of Foo.
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.