On Tue, Nov 20, 2018 at 7:36 AM Michel Levieux <m.levi...@capitaldata.fr> wrote: > > Yes, but you can just specify the concract like : > > contract doubleLinkedListNode { > X struct { > *X > *X > } > } > > which defines a type X containing at least two pointers to values of type X. > You'd do the same currently for a function type --> func (int, int, string), > which takes two ints in its arguments (along with a string), but you do not > name the parameter. I think one might not forget that we're talking "type > signature" here, and not type definition :)
Something like that won't help to compile the following: func (l *DoublyLinkedList) Insert(type Node DoublyLinkedListNode)(insertBefore,newNode *Node) { if insertBefore!=nil { newNode.next=insertBefore newNode.prex=insertBefore.prev } ... etc > > Le mar. 20 nov. 2018 à 15:26, Burak Serdar <bser...@ieee.org> a écrit : >> >> On Tue, Nov 20, 2018 at 6:27 AM Michel Levieux <m.levi...@capitaldata.fr> >> wrote: >> > >> > I guess X is the type that is represented by the struct, the meaning being >> > : "the type X is a struct that contains a field that is a pointer to a >> > value of the same type". >> > >> > EDIT : I think the "next" word, which is here the name of the field, can >> > even be omitted. The relevant information here is to know the type X >> > contains a field of type *X, whether this field is named "next" or "child" >> > or anything else does not break the viability of the expression. >> >> Name of the field cannot be omitted. For a doubly linked list, you'll >> need two of those, prev and next, and if you have a function working >> on a node satisfying that contract, it has to access both of those >> fields. >> >> >> >> > >> > >> > Le mar. 20 nov. 2018 à 12:38, komuW <komu...@gmail.com> a écrit : >> >>> >> >>> A contract can also be written in terms of a struct: >> >>> >> >>> contract linkedListNode { >> >>> X struct { >> >>> next *X >> >>> } >> >>> } >> >> >> >> >> >> In this example taken from the linked document; what is X? >> >> >> >> >> >> On Tuesday, 20 November 2018 05:38:31 UTC+3, Burak Serdar wrote: >> >>> >> >>> Hi, >> >>> >> >>> A while ago I sent an email to this list proposing an alternative way >> >>> to specify contracts using existing types, with a "like" keyword to >> >>> represent contracts on primitives. The idea stirred up some >> >>> discussion, I got some useful feedback, and eventually, it died down. >> >>> The idea stuck with me though, because it wasn't complete when I >> >>> proposed it, it had inconsistencies and unresolved problems. It turned >> >>> into this puzzle that I kept working on on the side, I started writing >> >>> a contracts/generics simulator, which I never finished, but it allowed >> >>> me to figure out a way to solve the problems the original idea had. So >> >>> the latest version of that proposal is now here: >> >>> >> >>> https://gist.github.com/bserdar/8f583d6e8df2bbec145912b66a8874b3 >> >> >> >> -- >> >> 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 golang-nuts+unsubscr...@googlegroups.com. >> >> For more options, visit https://groups.google.com/d/optout. >> > >> > -- >> > 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 golang-nuts+unsubscr...@googlegroups.com. >> > For more options, visit https://groups.google.com/d/optout. -- 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 golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.