Go Language Resources Go, golang, go... NOTE: This page ceased updating in October, 2012

--- Log opened Fri Feb 26 00:00:16 2010
00:02 -!- b00m_chef__ [~watr@173.183.31.245] has joined #go-nuts
00:03 -!- wuehlmaus [~wuehlmaus@p4FCC7F0C.dip.t-dialin.net] has quit [Ping
timeout: 256 seconds]
00:03 -!- idea_squirrel [idea_squir@77-21-31-106-dynip.superkabel.de] has quit
[Quit: what would a pirate do?]
00:03 -!- wuehlmaus [~wuehlmaus@p4FCC4EEE.dip.t-dialin.net] has joined #go-nuts
00:07 -!- amacleod [amacleod@c-75-69-45-62.hsd1.ma.comcast.net] has quit [Quit:
Bye Bye]
00:08 -!- vdrab [~vdrab@cap015-191.kcn.ne.jp] has joined #go-nuts
00:11 -!- vdrab [~vdrab@cap015-191.kcn.ne.jp] has left #go-nuts []
00:14 -!- nettok [~netto@proxy.galileo.edu] has quit [Quit: Ex-Chat]
00:15 < plexdev> http://is.gd/9c7Zy by [Robert Griesemer] in 8 subdirs of
go/src/ -- go/printer, gofmt: align comments in multi-line expression lists
00:18 -!- b00m_chef__ [~watr@173.183.31.245] has quit [Ping timeout: 265 seconds]
00:19 -!- nettok [~netto@proxy.galileo.edu] has joined #go-nuts
00:21 -!- sudi [~chatzilla@dslb-084-056-015-010.pools.arcor-ip.net] has joined
#go-nuts
00:26 -!- quixoten [~Devin_Chr@c-67-177-8-48.hsd1.ut.comcast.net] has joined
#go-nuts
00:27 -!- quixoten [~Devin_Chr@c-67-177-8-48.hsd1.ut.comcast.net] has quit [Client
Quit]
00:29 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
00:33 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
00:37 -!- Wiz126 [Wiz126@72.20.221.118] has quit [Ping timeout: 265 seconds]
00:39 -!- _ejb [~ejb@unaffiliated/ejb] has quit [Ping timeout: 276 seconds]
00:43 -!- Wiz126 [Wiz126@72.20.219.71] has joined #go-nuts
00:47 < plexdev> http://is.gd/9ceFQ by [Russ Cox] in 4 subdirs of
go/src/pkg/ -- use []byte("abc") in place of []byte{'a', 'b', 'c'}
00:49 < smw> []byte("abc") works now?  It never worked for me...
00:49 <+iant> it was just added
00:49 < smw> I just saw [18:17] <plexdev> http://is.gd/9bTY6 by [Russ
Cox] in 3 subdirs of go/ -- gc: implement []int(string) and []byte(string)
00:50 < smw> iant: does that mean strings.Bytes is depreciated?
00:50 <+iant> I assume so
00:50 -!- Xera^ [~brit@87-194-208-246.bethere.co.uk] has quit [Read error:
Connection reset by peer]
00:52 -!- nettok [~netto@proxy.galileo.edu] has quit [Quit: Ex-Chat]
00:53 -!- monty_hall [~sprague_r@adsl-99-40-250-203.dsl.sfldmi.sbcglobal.net] has
joined #go-nuts
00:54 -!- _ejb [~ejb@unaffiliated/ejb] has joined #go-nuts
01:14 -!- monty_hall [~sprague_r@adsl-99-40-250-203.dsl.sfldmi.sbcglobal.net] has
quit [Quit: Leaving.]
01:27 -!- sudi [~chatzilla@dslb-084-056-015-010.pools.arcor-ip.net] has quit
[Quit: ChatZilla 0.9.86 [Firefox 3.5.8/20100214235958]]
01:39 -!- bhungy [~bhungy@unaffiliated/bhungy] has joined #go-nuts
01:49 -!- sjbrown_ [~sjbrown@dsl081-072-059.sfo1.dsl.speakeasy.net] has quit
[Quit: Leaving]
01:50 -!- d3xter [~sinz@93-82-126-126.adsl.highway.telekom.at] has quit [Ping
timeout: 252 seconds]
01:52 -!- Associat0r [~Associat0@h163153.upc-h.chello.nl] has joined #go-nuts
01:55 -!- carllerche_ [~carllerch@enginey-9.border1.sfo002.pnap.net] has joined
#go-nuts
01:55 -!- monty_hall [~sprague_r@99.40.250.203] has joined #go-nuts
01:59 -!- carllerche [~carllerch@enginey-9.border1.sfo002.pnap.net] has quit [Ping
timeout: 265 seconds]
01:59 -!- monty_hall [~sprague_r@99.40.250.203] has quit [Client Quit]
01:59 -!- monty_hall [~sprague_r@adsl-99-40-250-203.dsl.sfldmi.sbcglobal.net] has
joined #go-nuts
02:01 -!- nutate [~rseymour@cacsag4.usc.edu] has quit [Quit: I'm outta heee-eere]
02:08 -!- Amaranth [~travis@ubuntu/member/Amaranth] has quit [Ping timeout: 268
seconds]
02:09 -!- Amaranth [~travis@ubuntu/member/Amaranth] has joined #go-nuts
02:15 -!- rhelmer [~rhelmer@adsl-69-107-87-1.dsl.pltn13.pacbell.net] has quit
[Quit: rhelmer]
02:15 -!- carllerche [~carllerch@enginey-9.border1.sfo002.pnap.net] has quit
[Quit: carllerche]
02:16 -!- Venom_X [~pjacobs@cpe-67-9-131-167.austin.res.rr.com] has quit [Quit:
Venom_X]
02:18 -!- rhelmer [~rhelmer@adsl-69-107-87-1.dsl.pltn13.pacbell.net] has joined
#go-nuts
02:21 -!- MarkBao [~MarkBao@64.134.96.99] has quit [Ping timeout: 258 seconds]
02:25 -!- Amaranth [~travis@ubuntu/member/Amaranth] has quit [Ping timeout: 268
seconds]
02:31 -!- Amaranth [~travis@ubuntu/member/Amaranth] has joined #go-nuts
02:38 -!- MarkBao [~MarkBao@pool-173-76-27-66.bstnma.fios.verizon.net] has joined
#go-nuts
02:45 -!- yatoo [~marcus@host86-153-224-40.range86-153.btcentralplus.com] has quit
[Ping timeout: 245 seconds]
02:49 -!- rhelmer [~rhelmer@adsl-69-107-87-1.dsl.pltn13.pacbell.net] has quit
[Quit: rhelmer]
02:52 -!- x-ip [~sakura@unaffiliated/x-ip] has joined #go-nuts
02:53 -!- tux21b [~christoph@90.146.60.30] has quit [Ping timeout: 265 seconds]
03:16 -!- defectiv [~clays@c-24-5-65-40.hsd1.ca.comcast.net] has joined #go-nuts
03:16 -!- Associat0r [~Associat0@h163153.upc-h.chello.nl] has quit [Quit:
Associat0r]
03:17 -!- millertimek1a2m3 [~adam@rrcs-67-79-54-130.sw.biz.rr.com] has joined
#go-nuts
03:20 -!- carllerche [~carllerch@c-69-181-129-204.hsd1.ca.comcast.net] has joined
#go-nuts
03:21 -!- jA_cOp [~yakobu@unaffiliated/ja-cop/x-9478493] has quit [Quit: Leaving]
03:25 -!- rhelmer [~rhelmer@adsl-69-107-87-1.dsl.pltn13.pacbell.net] has joined
#go-nuts
03:39 -!- millertimek1a2m3 [~adam@rrcs-67-79-54-130.sw.biz.rr.com] has quit [Quit:
Ex-Chat]
03:50 -!- adu [~ajr@pool-71-191-173-96.washdc.fios.verizon.net] has joined
#go-nuts
04:04 -!- Gracenotes [~person@wikipedia/Gracenotes] has joined #go-nuts
04:05 < plexdev> http://is.gd/9cTQa by [Christopher Wedgwood] in
go/doc/progs/ -- doc: Use byte("...") over byte{...}
04:17 -!- nettok [~netto@200.119.151.7] has joined #go-nuts
04:17 -!- hornjef [~hornjef@216.217.69.67] has joined #go-nuts
04:17 -!- hstimer [~hstimer@c-98-234-25-125.hsd1.ca.comcast.net] has joined
#go-nuts
04:17 < hstimer> what does the ...interface mean?
04:18 < hstimer> func Stdout(v ...interface{})
04:18 <+iant> hstimer: any number of arguments of any type
04:19 <+iant> ...T where T is a type means any number of arguments, each of
which must be assignment compatible with T
04:20 -!- GabydeWilde_ [~gabydewil@84-104-135-141.cable.quicknet.nl] has quit
[Ping timeout: 240 seconds]
04:28 < hstimer> iant: what is the representation of an interface?  it
appears to be a vtable kind of thing based on how it is used
04:29 <+iant> an empty interface is two words: a pointer to a type
descriptor, and a value
04:29 * hstimer fixed size?
04:29 <+iant> an interface with methods is three words: a pointer to a type
descriptor, a value, and a pointer to a table of function pointers
04:29 <+iant> fixed size, yes
04:29 <+iant> if the value is too large, it is stored as a pointer
04:30 < hstimer> so if you pass an int to something that wants an interface
the int gets boxed?
04:30 < smw> yep
04:30 <+iant> no, an int is small enough that it fits directly into the
interface
04:30 < hstimer> ah....  now it makes much more sense
04:30 <+iant> that is, if you assign an int value to an interface, the int
is just stored in the interface value
04:31 <+iant> of course if you assign a pointer to an int to an interface,
then the interface will store a pointer
04:32 <+iant> and if you assign a large struct value to an interface, the
struct value will get boxed
04:32 < hstimer> thank you
04:42 -!- pdusen [~pdusen@crob4-55.flint.umich.edu] has quit [Ping timeout: 260
seconds]
04:42 -!- hornjef [~hornjef@216.217.69.67] has left #go-nuts []
04:44 < hstimer> iant: so instead of hauling around a type descriptor all
the time, it can be created on the fly when needed...  nice
04:45 < hstimer> like a stout beer but with no calories....  :)
04:47 -!- OpenSpace [~ja@109.93.231.99] has quit [Ping timeout: 265 seconds]
04:50 -!- OpenSpace [~ja@109.93.231.99] has joined #go-nuts
04:52 -!- tav [~tav@92.24.47.76] has quit [Quit: tav]
05:02 -!- hstimer [~hstimer@c-98-234-25-125.hsd1.ca.comcast.net] has quit [Quit:
hstimer]
05:03 -!- robot12 [~robot12@szhilkin.broker.freenet6.net] has joined #go-nuts
05:03 -!- hstimer [~hstimer@2002:62ea:197d:0:226:bbff:fe05:dd9b] has joined
#go-nuts
05:10 -!- unistd [~play@123.133.134.208] has joined #go-nuts
05:13 -!- defectiv [~clays@c-24-5-65-40.hsd1.ca.comcast.net] has quit [Quit: This
computer has gone to sleep]
05:15 -!- divoxx [~divoxx@208.87.58.193] has quit [Ping timeout: 265 seconds]
05:16 -!- drhodes [~none@209-20-72-61.slicehost.net] has quit [Read error:
Operation timed out]
05:16 -!- vomjom [~vomjom@99-157-248-71.lightspeed.stlsmo.sbcglobal.net] has quit
[Ping timeout: 265 seconds]
05:17 -!- unistd [~play@123.133.134.208] has quit [Quit: Ex-Chat]
05:17 -!- vomjom [~vomjom@99-157-248-71.lightspeed.stlsmo.sbcglobal.net] has
joined #go-nuts
05:19 -!- drhodes [~none@209-20-72-61.slicehost.net] has joined #go-nuts
05:22 -!- jbauer [~jbauer@adsl-99-69-161-43.dsl.lsan03.sbcglobal.net] has joined
#go-nuts
05:27 -!- rhelmer [~rhelmer@adsl-69-107-87-1.dsl.pltn13.pacbell.net] has quit
[Ping timeout: 264 seconds]
05:27 -!- smcq_ [~smcq@smcq.net] has quit [Ping timeout: 264 seconds]
05:27 -!- smcq_ [~smcq@smcq.net] has joined #go-nuts
05:29 -!- Archwyrm [~archwyrm@66.249.8.146] has quit [Ping timeout: 260 seconds]
05:29 -!- Archwyrm [~archwyrm@66.249.8.146] has joined #go-nuts
05:30 -!- Associat0r [~Associat0@h163153.upc-h.chello.nl] has joined #go-nuts
05:33 -!- defectiv [~clays@c-24-5-65-40.hsd1.ca.comcast.net] has joined #go-nuts
05:42 -!- defectiv [~clays@c-24-5-65-40.hsd1.ca.comcast.net] has quit [Quit: This
computer has gone to sleep]
05:45 -!- smw_ [~stephen@pool-96-232-88-231.nycmny.fios.verizon.net] has joined
#go-nuts
05:48 -!- smw [~stephen@pool-96-232-88-231.nycmny.fios.verizon.net] has quit [Ping
timeout: 245 seconds]
05:49 -!- defectiv [~clays@c-24-5-65-40.hsd1.ca.comcast.net] has joined #go-nuts
05:49 -!- nettok [~netto@200.119.151.7] has quit [Quit: Ex-Chat]
05:55 -!- droid001 [~g1@p4FDCACA5.dip.t-dialin.net] has quit [Ping timeout: 265
seconds]
05:58 -!- defectiv [~clays@c-24-5-65-40.hsd1.ca.comcast.net] has quit [Quit: This
computer has gone to sleep]
06:08 -!- toni_ [~toni@87-93-37-160.bb.dnainternet.fi] has quit [Ping timeout: 260
seconds]
06:19 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has quit [Ping timeout:
600 seconds]
06:27 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts
06:32 -!- GabydeWilde_ [~gabydewil@84-104-135-141.cable.quicknet.nl] has joined
#go-nuts
06:34 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
06:36 -!- ollins [~ollins@84-73-206-133.dclient.hispeed.ch] has joined #go-nuts
06:38 -!- Cyprien_ [Cyprien@151-142.78-83.cust.bluewin.ch] has quit [Ping timeout:
264 seconds]
06:39 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Ping timeout: 246
seconds]
06:40 -!- taruti [taruti@aoi.yi.org] has quit [Ping timeout: 265 seconds]
06:40 -!- hhg [~hhg@hhg.to] has quit [Ping timeout: 246 seconds]
06:40 -!- hhg [~hhg@hhg.to] has joined #go-nuts
06:43 -!- adu_ [~ajr@pool-173-66-14-213.washdc.fios.verizon.net] has joined
#go-nuts
06:44 -!- mssm [~mssm@ip-95-221-66-70.bb.netbynet.ru] has joined #go-nuts
06:44 -!- _ejb [~ejb@unaffiliated/ejb] has quit [Ping timeout: 260 seconds]
06:44 < anticw> iant: do you know if the compiler/runtime can optimize "1" +
"2" + "3" + "4" to generate only one object or are intermediates formed?
06:44 < anticw> ie.  "12" "123" "1234" (then the first two get collected
eventually)
06:45 -!- adu [~ajr@pool-71-191-173-96.washdc.fios.verizon.net] has quit [Ping
timeout: 265 seconds]
06:51 -!- adu_ [~ajr@pool-173-66-14-213.washdc.fios.verizon.net] has quit [Quit:
adu_]
06:52 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
06:53 -!- taruti [taruti@aoi.yi.org] has joined #go-nuts
06:54 -!- ShadowIce [pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
06:55 -!- KillerX [~anant@145-116-234-40.uilenstede.casema.nl] has joined #go-nuts
06:55 -!- KillerX [~anant@145-116-234-40.uilenstede.casema.nl] has quit [Changing
host]
06:55 -!- KillerX [~anant@gentoo/developer/KillerX] has joined #go-nuts
06:59 -!- Luixsia [~Luixsia@AToulouse-254-1-43-69.w81-250.abo.wanadoo.fr] has
joined #go-nuts
07:01 -!- robot12 [~robot12@szhilkin.broker.freenet6.net] has left #go-nuts []
07:01 -!- KillerX [~anant@gentoo/developer/KillerX] has quit [Quit: Leaving.]
07:03 -!- Xurix [~Luixsia@AToulouse-254-1-43-69.w81-250.abo.wanadoo.fr] has quit
[Ping timeout: 256 seconds]
07:07 -!- defectiv [~clays@c-24-5-65-40.hsd1.ca.comcast.net] has joined #go-nuts
07:09 -!- defectiv [~clays@c-24-5-65-40.hsd1.ca.comcast.net] has quit [Client
Quit]
07:13 -!- droid001 [~g1@p4FDC9F61.dip.t-dialin.net] has joined #go-nuts
07:14 -!- idea_squirrel [~ct2rips@77-21-31-45-dynip.superkabel.de] has joined
#go-nuts
07:17 -!- Macpunk [~macpunk@2002:48b1:1add:0:eee:e6ff:fec7:7eaa] has joined
#go-nuts
07:19 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:a974:9249:3588:cf8e] has joined
#go-nuts
07:28 -!- trickie [~trickie@94.100.112.225] has joined #go-nuts
07:29 -!- wayneeseguin [~wayneeseg@rrcs-72-45-208-165.nys.biz.rr.com] has quit
[Ping timeout: 246 seconds]
07:31 -!- wayneeseguin [~wayneeseg@rrcs-72-45-208-165.nys.biz.rr.com] has joined
#go-nuts
07:36 -!- mssm [~mssm@ip-95-221-66-70.bb.netbynet.ru] has quit [Ping timeout: 256
seconds]
07:40 -!- ollins [~ollins@84-73-206-133.dclient.hispeed.ch] has quit [Remote host
closed the connection]
07:48 -!- x-ip [~sakura@unaffiliated/x-ip] has quit [Ping timeout: 265 seconds]
07:48 -!- wrtp [~rog@89.242.205.202] has joined #go-nuts
07:58 -!- ShadowIce [pyoro@unaffiliated/shadowice-x841044] has quit [Ping timeout:
246 seconds]
07:59 -!- monty_hall [~sprague_r@adsl-99-40-250-203.dsl.sfldmi.sbcglobal.net] has
quit [Ping timeout: 240 seconds]
08:02 -!- asmo [~asmo@c83-248-32-75.bredband.comhem.se] has joined #go-nuts
08:03 -!- Beoran [~9dc1cb2f@gateway/web/freenode/x-jlqmkuvlzlfevgki] has joined
#go-nuts
08:09 -!- Cyprien_ [~Cyprien@pub1.heig-vd.ch] has joined #go-nuts
08:10 -!- Beoran [~9dc1cb2f@gateway/web/freenode/x-jlqmkuvlzlfevgki] has left
#go-nuts []
08:10 -!- Beorann [~9dc1cb2f@gateway/web/freenode/x-jlqmkuvlzlfevgki] has joined
#go-nuts
08:11 < Beorann> how do I specify a constant in hexadecimal notation?  const
( ...  FOO = 0x01 ...  ) doesn't seem to work?
08:11 -!- carllerche [~carllerch@c-69-181-129-204.hsd1.ca.comcast.net] has quit
[Quit: carllerche]
08:12 -!- ShadowIce [pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
08:13 < anticw> iant: nm, -S shows me it does indeed not optimize that
08:13 < Beorann> whoops, the constant name stanted with an umber, nevermind
08:14 < Beorann> (I'm wrapping OpenCV and using some automatically generated
constant list)
08:15 < anticw> interesting...  i played with OpenCV a while ago for face
locating
08:15 < anticw> i found it very slow
08:17 -!- ct529 [~quassel@biolpc1758.york.ac.uk] has joined #go-nuts
08:18 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Ping
timeout: 276 seconds]
08:31 < Beorann> anticw: what open source alternative do you sugest?  :)
08:32 < Beorann> I do think it'sa bit strange you can't define new methods
on existing built in types...  would be very useful for custom string functions.
08:33 < Beorann> like, say converting them to a c string : func (self
string) cstr() (* C.char) { ...  }
08:34 < Beorann> you can call this "moneky patching", but it's very handy
08:36 -!- kaigan|work
[~kaigan@c-8290e255.1411-10-64736c14.cust.bredbandsbolaget.se] has joined #go-nuts
08:38 -!- Wiz126 [Wiz126@72.20.219.71] has left #go-nuts []
08:55 < Macpunk> Can't you give the type a name and use them
interchangeably?
08:56 < rsaarelm> Yeah, you can do a type alias for your own methods.
08:56 < rsaarelm> type MonkeyString = string; func (self MonkeyString)
MonkeyMethod() { ...  }
08:56 < rsaarelm> Then do MonkeyString("foo").MonkeyMethod()
08:57 -!- jA_cOp [~yakobu@unaffiliated/ja-cop/x-9478493] has joined #go-nuts
08:59 < Macpunk> ah, you have to typecast
09:00 < anticw> Beorann: oh, i dont have an alternative, i wish there was
one
09:00 < anticw> Beorann: i got it working easily enough, as a toy, but i was
a bit bummed at how poorly it worked in some cases and how very slow it is
09:00 < Macpunk> So, out of curiosity, why can't you define methods on the
built in types?
09:02 < Beorann> Macpunk: the compiler seems to balk at it
09:02 < anticw> i think that would be hard to make work
09:02 < anticw> like, what would the scoping rules be?
09:02 < Beorann> why?
09:02 < anticw> what if you have more than one definition in more than one
package?
09:03 < Macpunk> Beorann, well it's stated in Effective Go that you have to
define methods on built in types by giving them names.
09:03 < Macpunk> Ah, that makes sense.
09:03 < Beorann> Macpunk: how so?
09:03 < Beorann> how would I go at it?
09:03 < anticw> type fooname int
09:03 < Beorann> oh
09:04 < Macpunk> yar, what he said
09:04 < Beorann> let me give that a try
09:05 < Macpunk> http://pastebin.com/PEaattJZ
09:05 < Macpunk> There's a silly example.
09:15 < Beorann> hmmm it works for string bu it's not too useful becase if I
say type mystring string; strings aren't compatible with mystring
09:20 -!- erus` [~chatzilla@mailgate.ips-international.com] has joined #go-nuts
09:27 < Beorann> oh, and is gotest broken?  it complains it can't find my
Test([^a-z].*) functions while I do have them
09:28 < Beorann> I even set LC_ALL=C
09:29 < anticw> gotest shouldn't be affected (directly) by locales
09:30 < Beorann> this is the right rsignature for tests?  func TestLoad(t
*testing.T)
09:30 < Beorann> in a opencv_test.go file
09:34 -!- Beorann [~9dc1cb2f@gateway/web/freenode/x-jlqmkuvlzlfevgki] has quit
[Ping timeout: 252 seconds]
09:35 < Macpunk> damn, just missed him
09:37 -!- c0nfl|ct [~tiago@83.240.134.68] has joined #go-nuts
09:38 -!- Beorann [~9dc1cb2f@gateway/web/freenode/x-vmfobmlzafhgwdkh] has joined
#go-nuts
09:38 < Beorann> I got cut off :p
09:38 -!- hstimer [~hstimer@2002:62ea:197d:0:226:bbff:fe05:dd9b] has quit [Ping
timeout: 268 seconds]
09:42 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has quit [Ping
timeout: 268 seconds]
09:46 < Beorann> how would I define a type for function pointer for a
callback (yes I know I could use a channel, perhaps) ?
09:47 < Beorann> type Callback func (...) (result interface{}) doesn't seem
to work
09:49 < Beorann> oh, it does
09:49 < Beorann> but there's no ternary operator ?
09:50 -!- merlin83 [~merlin83@unaffiliated/merlin83] has quit [Ping timeout: 240
seconds]
09:51 < Beorann> as for operator overloading...  it would be easily enough
to allow it based upon the type of the first argument like in Ruby
09:52 < Beorann> something like oper (self * Mymatrix) + (other * Mymatrix)
(result * Mymatrix) {
09:52 < Beorann> no overloading or anything needed
09:52 < Macpunk> http://golang.org/doc/go_lang_faq.html#overloading
09:52 < Beorann> I read that
09:52 < Macpunk> figured you did :P
09:52 < Beorann> tyhis is my reply to it
09:53 < Macpunk> I see
09:53 < Beorann> it's much simpler tahn C++ operator overloading
09:53 < Beorann> and only works for homogenous types (or interfaces)
09:53 < Beorann> but it's very ncice for math-like or buffer like objects
09:54 < Beorann> or arrays, etc
09:54 < Beorann> it has the disadvantage that a + b ma ydo domethinge else
than b + a, but that's only minor, really.  Not really a problem in ruby either.
09:56 < Beorann> it may even make sense for things like << for
buffers.  foo << 1 may make sense , and 1 << foo not
09:56 -!- merlin83 [~merlin83@cm18.delta246.maxonline.com.sg] has joined #go-nuts
09:56 -!- merlin83 [~merlin83@cm18.delta246.maxonline.com.sg] has quit [Changing
host]
09:56 -!- merlin83 [~merlin83@unaffiliated/merlin83] has joined #go-nuts
09:59 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has joined
#go-nuts
10:08 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has joined #go-nuts
10:08 -!- sladegen [~nemo@unaffiliated/sladegen] has quit [Disconnected by
services]
10:09 -!- sladegen [~nemo@unaffiliated/sladegen] has joined #go-nuts
10:14 < rsaarelm>
http://groups.google.com/group/golang-nuts/browse_thread/thread/891ecf8a9fa1bed4
There's discussion about that on the mailing list.
10:16 < rsaarelm> Or actually it's talking about some kind of inlining
syntax.
10:18 < rsaarelm> I was recalling that there was some problem with operator
overloading suggestions in that they would make parsing the code require a symbol
table.  That thread is talking about that.
10:39 -!- c0nfl|ct [~tiago@83.240.134.68] has quit [Ping timeout: 245 seconds]
10:48 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has quit [Quit:
hcatlin]
10:51 -!- c0nfl|ct [~tiago@83.240.134.68] has joined #go-nuts
10:52 -!- Macpunk [~macpunk@2002:48b1:1add:0:eee:e6ff:fec7:7eaa] has quit [Ping
timeout: 248 seconds]
10:56 -!- mkn [~7c7cdbfa@gateway/web/freenode/x-njlvxmwlttszsalo] has joined
#go-nuts
10:56 -!- analogue [~analogue@toulouse.jfg-networks.net] has quit []
10:59 -!- Demp [~Demp@bzq-79-178-26-107.red.bezeqint.net] has quit [Remote host
closed the connection]
10:59 < Beorann> rsaarelm: if that's the problem, then it could be decided
that simple predifined method names are used in stead of the operators, like Lua
does it
10:59 -!- Demp [~Demp@bzq-79-178-26-107.red.bezeqint.net] has joined #go-nuts
11:01 < Beorann> so, for example -> func (self * Vector) OpAdd(other *
Vector) (* Vector) {} and then whenever you do v1 + v2 it becomes v1.OpAdd(v2)
11:01 < Beorann> (Lua uses __add__, but that name would not be exported by
fedault in Go)
11:05 -!- ioricloud [~henrique@unaffiliated/ioricloud] has joined #go-nuts
11:07 -!- analogue [~analogue@toulouse.jfg-networks.net] has joined #go-nuts
11:12 < Beorann> it would only make the compiler marginally more
complicated, and the run time speed would not be affected at all
11:13 < rsaarelm> That's pretty much how I envision operator overloading
could work, in a way that wouldn't require function overloading.
11:14 < jA_cOp> Beorann, it's __add
11:14 < jA_cOp> :P
11:14 < jA_cOp> That's exactly how it's done in D anyway, v1.opAdd(v2)
11:15 < jA_cOp> which is a better reference because Lua uses a seperate
object for metamethods
11:15 -!- mssm [~mssm@ip-95-221-68-117.bb.netbynet.ru] has joined #go-nuts
11:15 -!- General1337 [~support@71-84-247-187.dhcp.gldl.ca.charter.com] has joined
#go-nuts
11:16 < uriel> there are plenty of ways to implement op overloading, but
just because something can be implemented it doesn't mean that it is a good idea
11:20 -!- General13372 [~support@71-84-247-187.dhcp.gldl.ca.charter.com] has quit
[Ping timeout: 276 seconds]
11:20 < rsaarelm> Is there any consensus on a way that might be a non-bad
idea?
11:21 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Quit: WeeChat
0.3.1.1]
11:21 -!- ikke [~ikkibr@unaffiliated/ikkebr] has joined #go-nuts
11:21 < Beorann> jA_cOp: thanks for the hint on D, and yes it's better than
Lua
11:22 -!- path[l] [~path@122.182.0.38] has joined #go-nuts
11:22 < Beorann> uriel: why is it a bad idea?
11:22 < Beorann> uriel: I though Go was about speed but also about
programmer convenience
11:22 -!- monty_hall [~sprague_r@99.40.250.203] has joined #go-nuts
11:23 < Beorann> operator-like methods are very convenient, certainlt for
math-like objects and array-like ones
11:23 -!- monty_hall [~sprague_r@99.40.250.203] has quit [Remote host closed the
connection]
11:23 -!- monty_hall [~sprague_r@adsl-99-40-250-203.dsl.sfldmi.sbcglobal.net] has
joined #go-nuts
11:24 < Beorann> and on another note, if you have a method function that
takes no arguments, but froget to call it, you get a syntax error.  If would be
fun to have some sugar there too.  You get instant accessor methods.
11:24 < wrtp> Beorann: currently there is nothing in the language that
associates a built-in operator with a user-defined method
11:25 < Beorann> wrtp: sure , but what is not can yet be :)
11:25 < wrtp> yup - but the threshold is higher
11:26 < Beorann> wrtp: Ruby also has changed a bit since it's inception.
11:26 < Beorann> I do think that Go is , as of now, the most convenient low
level programming language I know . Ruby is the most conenient high level one.
11:26 < wrtp> also there are issues, like: if i define func (X) Add(i int)
X, then can i do 5 + x, where x is an X?
11:27 < Beorann> wrtp, no of course not
11:27 < wrtp> but then addition isn't commuative
11:27 < Beorann> you have to say X+ 5
11:27 < Beorann> sure
11:27 < Beorann> no problem
11:27 < wrtp> it is now
11:27 < Beorann> addition isn't commutative
11:27 < Beorann> for many things,
11:27 < wrtp> python has radd, or something similar
11:27 -!- yatoo [~marcus@host86-153-224-40.range86-153.btcentralplus.com] has
joined #go-nuts
11:27 < wrtp> to solve that issue
11:27 < wrtp> but it seems pretty clunky to me
11:28 < Beorann> wrtp: in Ruby there is a coerce
11:28 < Beorann> that gets called in this case on 5
11:28 < Beorann> IIRC
11:28 < wrtp> for which things is addition not commutative?
11:28 < rsaarelm> Strings :)
11:28 -!- jhnx [~bd732145@gateway/web/freenode/x-pqwimlcudkbtudsc] has joined
#go-nuts
11:28 < Beorann> wrtp: for anything but numbers, really
11:28 < wrtp> ok :-)
11:28 < Beorann> wrtp: and sets, maybe
11:29 < wrtp> in go, addition is only defined on numbers (well, and
strings!)
11:29 < Beorann> wrtp: arrays -> no , maps -> maybe
11:29 < rsaarelm> Vector addition, matrix addition seem pretty commutative
to me...
11:29 < Beorann> rsaarelm: yes, but there the problem doesn't arise
11:30 < Beorann> I don't mind scrificing cimommutativity
11:30 < Beorann> I don't mind scarificing commutativity
11:30 < rsaarelm> One might ask if you should even be making +-functions
which take arguments of different types.
11:31 < wrtp> there is that
11:31 < Beorann> rsaarelm: you can do (v *Vector) add (v2 *Vector) (*vector)
now
11:31 < wrtp> i don't think that it's so bad having to write out the method
names
11:31 < Beorann> func (v *Vector) add (v2 *Vector) (*Vector) {} I mean
11:31 < Beorann> well, yes, you can do v1.add(v2)
11:32 < Beorann> it's "not so bad", yes
11:32 < wrtp> at least that's in the same order as v1 + v2
11:32 < Beorann> but v1 + v2 being translated automartically to v1.add(v2)
is a very sweet and convenient sugar
11:33 < wrtp> i think there's a reluctance amongst the language designers to
start going down the "operators map to user-defined methods" route
11:33 < wrtp> partly, i think, because the properties of built-in operators
are well known
11:33 < Beorann> wrtp: I understand that, but operator overloading is also a
very often requested feature of GO
11:34 < wrtp> there are many oft-requested features of go :-)
11:34 < Beorann> sure
11:34 < Beorann> the thing is that there is a good reason to be against
something anda bad reason
11:34 < wrtp> currently if i see a "+" i know that it can't be doing
anything too involved
11:35 < Beorann> wrtp: that's true.  It will do simple math, or gibve a
compile error
11:35 < wrtp> with language design, there's always a balance of priorities.
11:35 < wrtp> there's no absolute good or bad
11:35 < Beorann> wrtp: again that's true.
11:35 < Beorann> wrtp: I am arguing on the side of convenience
11:36 < wrtp> convenience is not always a winning argument
11:36 -!- mkn [~7c7cdbfa@gateway/web/freenode/x-njlvxmwlttszsalo] has left
#go-nuts []
11:36 < Beorann> yes, but isn't convenience one of the 3 things go is about?
11:36 < wrtp> moreover: something that it convenient to write might not be
convenient to read
11:36 < wrtp> s/it/is/
11:37 < Beorann> wrtp: sure, but do you know Ruby
11:37 < Beorann> we're doing things like buf << str and everyone knows
what it means
11:37 < rsaarelm> The people wanting operator overloading are doing numeric
computation, and numeric computation sounds like something that should fall into
Go's niche of efficient compiled code and concurrency support.
11:37 < wrtp> not really.  i've used python a reasonable amount, and i'm
familiar with the langage space that ruby inhabits
11:37 < Beorann> rsaarelm: yes, that too
11:38 < Beorann> rsaarelm: I'm also looking into Go as a game programming
language
11:38 < wrtp> what does buf << str mean?
11:38 < Beorann> same as it does in C++
11:38 -!- path[l] [~path@122.182.0.38] has quit [Ping timeout: 240 seconds]
11:38 < wrtp> append str to buf?
11:38 < Beorann> indeed
11:38 < rsaarelm> Write it there.
11:38 < wrtp> why not buf + str?
11:38 < rsaarelm> Because write to stream != append.
11:39 < wrtp> is it really better than buf.Append(str) ?
11:39 < Beorann> buf = buf + str also wiorks in Ruby, yes
11:39 < wrtp> i always thought that C++'s overloading of << to mean IO
was a dreadful pun
11:39 < Beorann> foor example, if you have a sprite, it's easy to represent
it's position using a 2D vector when you have
11:39 < rsaarelm> A lot of people think that.  They might not be wrong.
11:40 < Beorann> rsaarelm: sure, it's a mediocre pun.  But in ruby bute
shifts are rarely used
11:40 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has quit [Quit:
leaving]
11:40 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has joined #go-nuts
11:40 < Beorann> and, yes, you can even do buf.append(str) in ruby as well,
I think
11:40 < wrtp> also, an infix operator shouldn't have side effects
11:41 < Beorann> wrtp: that's an argument I can sympathise with
11:41 < wrtp> the go way means that you're guaranteed that
11:42 < Beorann> but v.add doesn't guarantee that
11:42 < Beorann> is there a way to make immutable types in Go?
11:42 < wrtp> indeed, and it's obvious when you read it that you need to
take that possibility into account
11:42 < wrtp> Beorann: yes, just pass 'em by value
11:43 < Beorann> so something like this?
11:43 < wrtp> e.g func (x Vector)Add(y Vector) Vector
11:43 < Beorann> like that?
11:43 < wrtp> rather than a pointer method
11:43 < Beorann> ah
11:43 < Beorann> then, the problem is not so severe, right?
11:44 < Beorann> you could require that the types are immutable
11:44 < wrtp> e.g.  the Point type here: http://golang.org/pkg/exp/draw/
11:44 < wrtp> an immutable type doesn't mean no side effects
11:44 < wrtp> the immutable type might point to mutable members, for example
11:45 < Beorann> wrtp: true, though that seems contrived
11:45 < wrtp> or it might update a global data structure
11:46 < wrtp> or send on a channel
11:46 < Beorann> wrtp: ok, those two last examples make sense
11:47 < Beorann> how to say, it's an example of a balance between
convenience and simplicity
11:47 < wrtp> yup
11:47 < Beorann> no operator overloading is simpler but less convenient
11:48 < wrtp> simpler, and also more transparent, which isn't necessarily
the same thing
11:48 < Beorann> I don't know if transparenty is that important though
11:49 < Beorann> for example, in Ruby, al array-mike types ahve a method
.last and .first
11:49 < wrtp> i think it's a very important property when maintaining s/w
11:49 < Beorann> some (Java-) peoplecomplained about this becauuse they say
you could also do a[0] and a[len(a)-1]
11:50 < Beorann> however, this exposes the implementation
11:50 < Beorann> an example of how transpareny may be unwanted
11:50 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has quit [Quit:
leaving]
11:50 < wrtp> i'm not sure that's transparency.  that's just choosing
appropriate abstractions.
11:50 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has joined #go-nuts
11:51 < Beorann> wrtp: then you will hae to tell me what you understand by
transpareny, I fear :)
11:51 < wrtp> transparency is having a reasonably model of what's going on
in a piece of code without having to know all the types and what's going on in all
the functions & methods that are being called in it
11:51 < wrtp> s/reasonably/reasonable/
11:52 < wrtp> with go, i know that if i see an operator, i know not to worry
too much.  i can locally rearrange code without complete understanding of what's
going on.
11:53 < wrtp> local code transformation is crucial
11:53 < Beorann> so, you mean, "if io read these few lines of code I should
be able to largely understand what they're doing"
11:53 < wrtp> yup
11:53 < wrtp> or at any rate, i know where the magic may be happening
11:54 < wrtp> and i know which bits are straightforward.
11:54 < Beorann> but , wit such simple operator methdos, the magic, for a
type will happen in it's package only
11:54 < wrtp> sure.  but it's still magic.
11:54 < wrtp> if i'm looking at someone else's package, currently i can
glance at a piece of code and know that it's trivial (or not)
11:54 < Beorann> hmmm...  it's a two edged sword again
11:55 < wrtp> yup
11:55 -!- DerHorst [~Horst@e176119043.adsl.alicedsl.de] has joined #go-nuts
11:55 < Beorann> I daresay "technology that is distinguishable from magic is
not sufficiently advanced"
11:55 < wrtp> that's why the answer isn't obviously "yes" when you ask them
to put in operator-overloading...
11:56 < wrtp> we're still in the dark ages
11:56 < Beorann> wrtp: sure, I understand your arguments well
11:56 < wrtp> always will be, when it comes to computers - turing complete
runs deep
11:57 -!- path[l] [~path@122.182.0.38] has joined #go-nuts
11:57 < Beorann> wrtp: I have seen a research paper that states that AI can
be more proerful than a turing machine
11:57 < wrtp> oh yeah?
11:57 -!- erus` [~chatzilla@mailgate.ips-international.com] has quit [Ping
timeout: 256 seconds]
11:57 < wrtp> you talking 'bout oracles?
11:57 < Beorann> if you use a machine that uses complete real numbers on
it's "strip"
11:57 < Beorann> not really
11:58 < wrtp> the universe doesn't contain complete real numbers
11:58 < Beorann> that is the catch
11:58 < wrtp> planck constant an' all
11:58 < Beorann> our brain, though, uses levels of pules that are close to
real numbers
11:59 < Beorann> how to say , that approcximate real numbers to the planck
constant
11:59 < wrtp> it's more than a catch.  it's like: we can do time travel...
if we can travel faster than light
11:59 < Beorann> so, to do real AI that is as goodd as our brains ,we need a
similar approximation
11:59 < wrtp> close is infinitely far away
12:00 < wrtp> you mean we need larger computers
12:00 < wrtp> ?
12:00 < wrtp> sure
12:00 < wrtp> the brain's more powerful than we give it credit for
12:00 < Beorann> yes, and we will need to model parameters with someting
like Bignum in Ruby (aritrary precision math)
12:01 < wrtp> i don't think so
12:01 -!- c0nfl|ct [~tiago@83.240.134.68] has quit [Ping timeout: 248 seconds]
12:01 < wrtp> 2^x gets big fast
12:01 < Beorann> yes, but there are a lot of prteins in a mole :)
12:01 < wrtp> 10^35 isn't that big
12:02 < Beorann> the amont of atioms in the brain?
12:02 < wrtp> the number of planck constants in a metre
12:02 < wrtp> although i've got the units wrong...
12:03 < Beorann> the avogadro constant, 1 mole is 12 g of carbon
12:03 < wrtp> i'm not sure avogadro's constant is relevant here
12:04 < Beorann> 6 * 10^ 23
12:04 < Beorann> you have to model every atom
12:04 -!- tux21b [~christoph@90.146.60.30] has joined #go-nuts
12:04 < wrtp> it's just good for calculating concentrations of gases etc
12:05 < wrtp> but anyway, we're just talking big computers.  but you never
escape turing
12:05 -!- path[l] [~path@122.182.0.38] has quit [Ping timeout: 265 seconds]
12:05 < wrtp> by the time you get to computers that big, we won't be able to
program them directly.
12:06 < Beorann> wrtp: well, you areable to do so, but the programs will not
be interesting :)
12:06 -!- jbauer [~jbauer@adsl-99-69-161-43.dsl.lsan03.sbcglobal.net] has quit
[Remote host closed the connection]
12:06 < wrtp> it'll be more like physics, but with a non-physical substrate
12:06 < Beorann> in essence, we need to program a basic program that can
leearn new things
12:06 < wrtp> we can do that already, in some domains
12:06 < Beorann> yes
12:07 -!- Kashia [~Kashia@port-92-200-133-127.dynamic.qsc.de] has quit [Quit: This
computer has gone to sleep]
12:07 < wrtp> the question is: what language do you use to write the basic
program?
12:07 < Beorann> wrtp: it's irrelevant isn't it :)
12:07 < wrtp> totally not
12:07 < Beorann> because of turting, any will do
12:08 < wrtp> because of humans, it matters very much
12:08 < Beorann> wrtp convenience :)
12:08 < wrtp> ...  and understandability, reliability, maintainability...
12:09 < Beorann> each of which must be balanced against one another
12:09 < wrtp> sure
12:09 < Beorann> different language designs give different balances
12:09 < wrtp> totally
12:09 < Beorann> I like my language convenient, though :)
12:09 < wrtp> haskell, go, ruby, C, lisp
12:10 -!- tametick [~chatzilla@chello084114134061.3.15.vie.surfer.at] has joined
#go-nuts
12:10 < Beorann> But, as I said before, amongst the compilable languages I
know, Go is one the most convenient so far.
12:10 < wrtp> i agree, but i'm prepared to make the necessary sacrifices for
maintainability
12:10 < wrtp> i've discarded too many lines of code
12:11 < Beorann> well, Ruby takes the opposite approach.  it lets you do all
sorts of convenient things.  it's up to the programmer not to abuse that power
12:11 < wrtp> yeah.  but it's also really slow.
12:11 < Beorann> wrtp: it's getting faster as of lately
12:12 < Beorann> still interpreted though, like python, etc
12:12 < Beorann> although JRuby is compiled nowadays to JVM
12:12 -!- Demp [~Demp@bzq-79-178-26-107.red.bezeqint.net] has quit [Ping timeout:
268 seconds]
12:12 < tametick> python is actually compiled to bytecode these days :p
12:12 < Beorann> tametick: So is Ruby, nowadays :)
12:12 -!- DerHorst [~Horst@e176119043.adsl.alicedsl.de] has quit [Quit:
Verlassend]
12:12 < wrtp> bytecode or machine code?
12:12 < tametick> i don't mean jython
12:12 < tametick> the actual cpython
12:13 < Beorann> sure
12:13 -!- Demp [~Demp@bzq-79-183-1-239.red.bezeqint.net] has joined #go-nuts
12:13 < Beorann> Ruby 1.9.1 uses a VM 'Rite' and bytecode for that
12:13 < wrtp> but the fundamentally dynamic design needs to be paid for,
either in code space or time space
12:13 < tametick> interesting
12:13 < Beorann> wrtp: sure, like in Objective C or in Smalltalk
12:13 < wrtp> yup
12:14 < wrtp> or lisp
12:14 < Beorann> But I don't mind
12:14 < wrtp> others do
12:14 < Beorann> I think I'll try to implement a Ruby-like .send in Go :)
12:14 < wrtp> what's .send ?
12:14 < Beorann> method sicpatch of Rubvy all passes though .send
12:15 < Beorann> object.send("methodname", ...)
12:15 < wrtp> each object implements its own .send methods?
12:15 < Beorann> no, it's inherited
12:15 < wrtp> s/methods/method/
12:15 < Beorann> but you can override it
12:15 < wrtp> sure
12:15 < wrtp> same deal in python
12:16 < Beorann> same in Objective C or Smalltalk
12:16 < Beorann> the only "primitive" in sucha language really is send
12:16 < wrtp> sure
12:16 < Beorann> and this does a hash lookup and then calls the found
function
12:16 < wrtp> that means that it's easy to write stuff that looks the same,
but is really slow, 'cos it's doing too much dynamic dispatch
12:17 < wrtp> it's a fundamentally different attitude to language design
12:17 < wrtp> and good for DSL
12:17 < Beorann> wrtp: sure, but the flexibility is very useful, expecially
for GUI programming
12:17 < Beorann> yes, good for DSL also :)
12:17 < wrtp> yeah, i see it both ways
12:18 -!- tametick [~chatzilla@chello084114134061.3.15.vie.surfer.at] has left
#go-nuts []
12:18 < wrtp> if i want a language that's good for DSLs, i'll use lisp
12:18 < Beorann> Also, I'm sure I can embed ruby in Go :)
12:18 < Beorann> wrtp: go's (lack of) syntax is not so convenient
12:19 < wrtp> ...  but it does mean that the compiler can do a good job
without having to be too clever at run time
12:19 < wrtp> that's the trade off
12:19 < Beorann> wrtp: actually, /syntax/ doesn't change runtime efficiency.
/semantics/ do
12:20 < wrtp> sure
12:20 < wrtp> so what did you mean be lack of syntax?
12:20 < Beorann> Ruby's syntax is very convenient for SDL's
12:20 -!- jalmeida [~jalmeida@c9340a2e.virtua.com.br] has joined #go-nuts
12:20 < wrtp> go has about as much syntax as ruby, AFAICS
12:20 < Beorann> in lisp yo have to (use (lots-of (brackets)))
12:20 < wrtp> *shrug*
12:20 < Beorann> Is syntax unimportant?
12:21 < wrtp> no, a balanced syntax is crucial
12:21 -!- Demp [~Demp@bzq-79-183-1-239.red.bezeqint.net] has quit [Ping timeout:
240 seconds]
12:21 -!- yatoo [~marcus@host86-153-224-40.range86-153.btcentralplus.com] has quit
[Ping timeout: 248 seconds]
12:21 < wrtp> but you said "go's (lack of) syntax is not so convenient"
12:21 < Beorann> Exactly!  I think it's the inteface tho the semantics of
the language.  So it matters just as much as the semantics.
12:21 < wrtp> sure
12:21 < Beorann> wrtp: oops!
12:22 < Beorann> I meant lisp(s (lack of syntax)
12:22 < wrtp> ah, i see
12:22 < wrtp> lisp's lack of syntax is crucial to the way it works
12:22 < Beorann> go could use a bit more sugar, IMO, but it's miles ahead of
C, C+, D, Vala, etc
12:22 < wrtp> there's no other language that makes it so easy to work at
meta level
12:23 < Beorann> yes, lisp sacrifices syntax for semantical reasons
12:23 < wrtp> the backquoting rules work amazingly well
12:23 < Beorann> I don't know lisp metaprogramming, but I did a lot of
Rubymetaprogramming and it's also relatively easy
12:24 < wrtp> but couldn't work with any syntax more complex, i think.
12:24 -!- Demp [~Demp@109.67.43.51] has joined #go-nuts
12:24 < wrtp> the point is: in lisp, the meta-level looks *exactly* the same
as the level itself
12:24 < wrtp> syntactically
12:24 < rsaarelm> Yeah, it's the homoiconic property.
12:25 < wrtp> yeah.  and that's why lisp is such an important language
12:25 < rsaarelm> The language and the representation look the same.
12:25 < rsaarelm> Factor's got pretty much the same btw.
12:25 < wrtp> i don't know about Factor
12:25 < sladegen> it's basically forth.
12:26 < wrtp> i have a fundamental disagreement with stack-based languages
12:26 < rsaarelm> Yeah.  The programs are word strings, and it can
manipulate word-strings.
12:26 -!- erus` [~chatzilla@mailgate.ips-international.com] has joined #go-nuts
12:26 < Beorann> it's interestingg, but also sort of academical.  I struggle
even with a Gimp macro (in scheme).  :p
12:26 < wrtp> too much postscript debugging
12:26 -!- yatoo [~marcus@host86-160-77-91.range86-160.btcentralplus.com] has
joined #go-nuts
12:26 < rsaarelm> Factor was fun, it'd take me hours to come up with a
three-line function.
12:26 < rsaarelm> For some values of fun.
12:26 < sladegen> turing tar-pits...
12:27 < wrtp> sladegen: good phrase.  yes.
12:27 < Beorann> ah, the joys of postscript
12:27 < Beorann> I defined some meta stuff that let me write it in a normal
way
12:28 < wrtp> by "normal", you mean not reversed-polish ?
12:28 -!- Demp [~Demp@109.67.43.51] has quit [Read error: Connection reset by
peer]
12:29 -!- expate98 [~user@pool-74-105-215-60.nwrknj.fios.verizon.net] has joined
#go-nuts
12:29 -!- Demp [~Demp@bzq-109-67-43-51.red.bezeqint.net] has joined #go-nuts
12:30 -!- afurlan [~afurlan@scorpion.mps.com.br] has joined #go-nuts
12:31 < Beorann> yes
12:32 < Beorann> I was just taking a look at it
12:32 < Beorann> forgot how it worked , though
12:32 < Beorann> :)
12:33 < Beorann> ah, oh, but a Go-related question
12:33 < Beorann> can an interface be a function type?
12:34 < Beorann> Umm, I mean, how would I say that any function func
foo(...) is fine
12:35 < Beorann> just type callback foo(...) (int)?
12:35 < Beorann> just type callback func foo(...) (int)?
12:35 < Beorann> I mean, ..  could that also be specified as an interface
somehow?
12:36 -!- Demp [~Demp@bzq-109-67-43-51.red.bezeqint.net] has quit [Ping timeout:
245 seconds]
12:37 -!- Demp [~Demp@bzq-79-181-3-18.red.bezeqint.net] has joined #go-nuts
12:42 < rsaarelm> If you're asking whether you can write an interface whose
value you can use like a callback function, no, I don't think so.
12:44 < rsaarelm> You can make function types define an interface though,
which is neat: "type FuncWriter func(out io.Writer); func (self FuncWriter)
Write(out io.Writer) { self(out) }"
12:45 -!- cmarcelo [~cmarcelo@200.184.118.130] has joined #go-nuts
12:45 -!- cmarcelo [~cmarcelo@200.184.118.130] has quit [Changing host]
12:45 -!- cmarcelo [~cmarcelo@enlightenment/developer/cmarcelo] has joined
#go-nuts
12:45 < rsaarelm> (If I understood correctly, this is the exact opposite of
what you were asking...)
12:49 < Beorann> rsaarelm: thanks, very interesting
12:52 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has joined
#go-nuts
12:55 -!- nanoo [~nano@95-89-189-46-dynip.superkabel.de] has joined #go-nuts
13:01 -!- hcatlin [~hcatlin@pdpc/supporter/professional/hcatlin] has quit [Quit:
hcatlin]
13:08 -!- expate98 [~user@pool-74-105-215-60.nwrknj.fios.verizon.net] has left
#go-nuts []
13:16 -!- Xera^ [~brit@87-194-208-246.bethere.co.uk] has joined #go-nuts
13:16 < Beorann> if you have a foo which is struct Foo {} and a bar wich is
struct Bar { Foo ; other string } and a func (Foo) Frob() {} ; is there a way to
convert Foo back into Bar if you call bar.Frob() ?
13:16 < Beorann> inside Frob
13:24 -!- powerje [~powerje@2002:4b3c:d6ac:0:213:e8ff:feaa:ae2b] has quit [Ping
timeout: 268 seconds]
13:24 -!- tibshoot [~tibshoot@linagora-230-146.pr0.nerim.net] has joined #go-nuts
13:24 -!- MarkBao [~MarkBao@pool-173-76-27-66.bstnma.fios.verizon.net] has quit
[Ping timeout: 265 seconds]
13:30 -!- Demp [~Demp@bzq-79-181-3-18.red.bezeqint.net] has quit [Ping timeout:
264 seconds]
13:32 -!- powerje [~powerje@2002:4b3c:d6ac:0:213:e8ff:feaa:ae2b] has joined
#go-nuts
13:34 < rsaarelm> The methods for the embedded type get the embedded type's
value as caller.  I don't think there's an easy way, I'm guessing straight casting
isn't going to work since the outer type has a different structure.
13:36 < rsaarelm> You could do something seriously dirty and foul with
unsafe, I suppose.
13:37 -!- asmo [~asmo@c83-248-32-75.bredband.comhem.se] has quit [Remote host
closed the connection]
13:37 < Beorann> rsaarelm: I see...
13:39 < rsaarelm> "tmp := new(Bar); ptrDelta := unsafe.Pointer(&tmp.Foo) -
unsafe.Pointer(tmp); barVal := (*Bar)(unsafe.Pointer(fooVal) - ptrDelta)"
Something like that?
13:39 < rsaarelm> Which you probably shouldn't do.
13:40 < rsaarelm> (The pointer arithmetic syntax and the pointer referencing
is probably wrong, but hopefully the idea can be seen)
13:42 -!- mssm [~mssm@ip-95-221-68-117.bb.netbynet.ru] has quit [Read error:
Operation timed out]
13:43 < rsaarelm> One problem is that in the method you don't know if you're
dealing with an embedded or standalone Foo, and if you pull that fuckery on a
standalone Foo, you've just ran into memory corruption country.
13:48 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
13:48 < Beorann> rsaarelm: OK. Alternatively, how would I define a type that
is a method func?  type func (self * Foo) M (...) (* Foo) doesn't seem to work?
13:50 < rsaarelm> Do you have an use for that that you can't do with a
single-method interface?
13:51 < Beorann> I'm trying to see how far I can push the limits :)
13:52 -!- oal [~olav@5.79-160-122.customer.lyse.net] has joined #go-nuts
13:52 < Beorann> Suppose I wanted to implement a lisp / ruby interpreter ;)
13:52 < Beorann> I find I learn more if I try such things.
13:55 < rsaarelm> Well there are method expressions, which the compilers
don't support yet.
13:55 * araujo thinks a lisp interpreter could be interesting thing to try indeed
:)
13:55 < rsaarelm> If Foo has method M(Bar), the corresponding method
expression should be Foo.M(Foo, Bar).
13:56 < rsaarelm> So you could have a regular function type, which you could
plug a method of type Foo in.
13:57 < rsaarelm> Reading the language spec cover to cover might be a good
idea if you want a handle on where the expressive limits are.
13:58 -!- mssm [~mssm@ip-95-221-112-62.bb.netbynet.ru] has joined #go-nuts
13:58 < Beorann> rsaarelm: that sunds very useful though
13:58 < Beorann> too bad it's not implemented yet
13:59 < Beorann> I think I could put them to good use.
14:04 -!- ioricloud [~henrique@unaffiliated/ioricloud] has left #go-nuts
["Leaving"]
14:13 -!- mssm [~mssm@ip-95-221-112-62.bb.netbynet.ru] has quit [Ping timeout: 276
seconds]
14:17 < bortzmeyer> undefined: strings.Bytes
14:17 < bortzmeyer> but Bytes still exist, according to
http://golang.org/pkg/strings/
14:18 < bortzmeyer> The Web site is late?  (Indeed, Bytes seem to have been
deleted from ./src/pkg/strings/strings.go)
14:20 -!- smw_ [~stephen@pool-96-232-88-231.nycmny.fios.verizon.net] has quit
[Ping timeout: 265 seconds]
14:23 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has quit [Ping
timeout: 276 seconds]
14:23 < rsaarelm> There was a patch today where strings.Bytes was replaced
with a cast, []byte(str) or something.
14:26 < bortzmeyer> And someone forgot to type "make web" :-)
14:26 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
14:33 -!- mssm [~mssm@ip-95-221-80-106.bb.netbynet.ru] has joined #go-nuts
14:42 < bortzmeyer> []byte(str) seems to work (to replace strings.Bytes)
14:46 -!- powerje [~powerje@2002:4b3c:d6ac:0:213:e8ff:feaa:ae2b] has quit [Quit:
exit]
14:52 -!- trickie [~trickie@94.100.112.225] has quit [Quit: Computer has gone to
sleep]
14:52 -!- trickie [~trickie@94.100.112.225] has joined #go-nuts
14:54 -!- trickie [~trickie@94.100.112.225] has quit [Client Quit]
14:55 -!- trickie [~trickie@94.100.112.225] has joined #go-nuts
14:58 -!- KB1JWQ [~KB1JWQ@freenode/staff/kb1jwq] has quit [Quit: leaving]
14:59 -!- KB1JWQ [~KB1JWQ@freenode/staff/kb1jwq] has joined #go-nuts
15:15 -!- Demp [~Demp@bzq-79-183-34-59.red.bezeqint.net] has joined #go-nuts
15:16 -!- c0nfl|ct [~tiago@83.240.134.68] has joined #go-nuts
15:28 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts
15:29 -!- mode/#go-nuts [+v iant] by ChanServ
15:34 -!- Demp [~Demp@bzq-79-183-34-59.red.bezeqint.net] has quit [Read error:
Connection reset by peer]
15:35 -!- Demp [~Demp@bzq-79-183-34-59.red.bezeqint.net] has joined #go-nuts
15:37 -!- Cyprien_ [~Cyprien@pub1.heig-vd.ch] has quit [Ping timeout: 276 seconds]
15:40 -!- smw [~stephen@pool-96-232-88-231.nycmny.fios.verizon.net] has joined
#go-nuts
15:42 -!- Venom_X [~pjacobs@cpe-67-9-131-167.austin.res.rr.com] has joined
#go-nuts
15:43 -!- monty_hall [~sprague_r@adsl-99-40-250-203.dsl.sfldmi.sbcglobal.net] has
quit [Ping timeout: 276 seconds]
15:46 -!- monty_hall [~sprague_r@adsl-99-40-250-203.dsl.sfldmi.sbcglobal.net] has
joined #go-nuts
15:46 -!- ct529 [~quassel@biolpc1758.york.ac.uk] has quit [Remote host closed the
connection]
15:57 -!- grahame [~grahame@billy.angrygoats.net] has quit [Ping timeout: 256
seconds]
15:58 -!- grahame [~grahame@billy.angrygoats.net] has joined #go-nuts
16:01 -!- smw [~stephen@pool-96-232-88-231.nycmny.fios.verizon.net] has quit [Ping
timeout: 256 seconds]
16:09 -!- ct529 [~quassel@biolpc1758.york.ac.uk] has joined #go-nuts
16:25 -!- erus` [~chatzilla@mailgate.ips-international.com] has quit [Quit:
ChatZilla 0.9.86 [Firefox 3.6/20100115144158]]
16:27 -!- gzmask [~ray@corwin.cat.uregina.ca] has joined #go-nuts
16:27 -!- asmo [~asmo@c-f6c5e055.1155-1-64736c11.cust.bredbandsbolaget.se] has
joined #go-nuts
16:30 -!- g0bl1n [~anonymous@a213-22-237-221.cpe.netcabo.pt] has joined #go-nuts
16:30 -!- kaigan|work
[~kaigan@c-8290e255.1411-10-64736c14.cust.bredbandsbolaget.se] has quit [Quit:
kaigan|work]
16:32 -!- ilsanto [~max@unaffiliated/ilsanto] has joined #go-nuts
16:32 -!- Demp [~Demp@bzq-79-183-34-59.red.bezeqint.net] has quit [Read error:
Connection reset by peer]
16:35 -!- Demp [~Demp@bzq-79-183-34-59.red.bezeqint.net] has joined #go-nuts
16:35 -!- nanoo [~nano@95-89-189-46-dynip.superkabel.de] has quit [Quit: Leaving]
16:41 -!- Venom_X [~pjacobs@cpe-67-9-131-167.austin.res.rr.com] has quit [Quit:
Venom_X]
16:44 -!- jalmeida [~jalmeida@c9340a2e.virtua.com.br] has quit [Remote host closed
the connection]
16:45 -!- b00m_chef__ [~watr@d64-180-45-230.bchsia.telus.net] has joined #go-nuts
16:48 -!- TMKCodes [~toni@87-95-123-98.bb.dnainternet.fi] has joined #go-nuts
16:49 -!- tav [~tav@92.24.47.76] has joined #go-nuts
16:51 -!- trickie [~trickie@94.100.112.225] has quit [Quit: outty]
16:51 -!- jalmeida [~jalmeida@c9340a2e.virtua.com.br] has joined #go-nuts
16:55 -!- tux21b [~christoph@90.146.60.30] has quit [Quit: Ex-Chat]
16:56 -!- toni_ [~toni@bbwirelessgw2-fee1dc00-62.dhcp.inet.fi] has joined #go-nuts
16:57 -!- TMKCodes [~toni@87-95-123-98.bb.dnainternet.fi] has quit [Ping timeout:
245 seconds]
16:58 < c0nfl|ct> bom fim de semana...
16:58 -!- c0nfl|ct [~tiago@83.240.134.68] has quit [Read error: Connection reset
by peer]
17:02 < plexdev> http://is.gd/9fD9U by [Rob Pike] in go/ -- add
micah.stetson to C&A
17:02 < plexdev> http://is.gd/9fDau by [Micah Stetson] in
go/src/pkg/template/ -- Fix a couple of bugs referencing data values in template.
17:06 -!- g0bl1n [~anonymous@a213-22-237-221.cpe.netcabo.pt] has quit [Quit:
g0bl1n]
17:10 -!- ct529 [~quassel@biolpc1758.york.ac.uk] has quit [Remote host closed the
connection]
17:21 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-171-141.clienti.tiscali.it] has
joined #go-nuts
17:22 -!- bortzmeyer [~stephane@2a01:e35:8bd9:8bb0:a974:9249:3588:cf8e] has quit
[Quit: Leaving.]
17:36 -!- tibshoot [~tibshoot@linagora-230-146.pr0.nerim.net] has quit [Quit:
Quitte]
17:43 -!- Venom_X [~pjacobs@rrcs-71-41-4-194.sw.biz.rr.com] has joined #go-nuts
17:43 -!- smw_ [~stephen@pool-96-232-88-231.nycmny.fios.verizon.net] has joined
#go-nuts
17:47 -!- wrtp [~rog@89.242.205.202] has quit [Quit: wrtp]
17:48 -!- wrtp [~rog@89.242.205.202] has joined #go-nuts
17:48 -!- sudi [~chatzilla@dslb-084-056-015-010.pools.arcor-ip.net] has joined
#go-nuts
17:49 -!- Venom_X [~pjacobs@rrcs-71-41-4-194.sw.biz.rr.com] has quit [Quit:
Venom_X]
17:50 -!- Daminvar [~Daminvar@129.21.121.107] has joined #go-nuts
17:56 -!- Venom_X [~pjacobs@cpe-72-177-102-160.austin.res.rr.com] has joined
#go-nuts
17:59 -!- GeoBSD [~geobsd@lns-bzn-27-82-248-63-252.adsl.proxad.net] has joined
#go-nuts
18:04 -!- keeto [~keeto@121.54.92.149] has quit [Read error: Connection reset by
peer]
18:05 -!- g0bl1n [~anonymous@a213-22-237-221.cpe.netcabo.pt] has joined #go-nuts
18:05 -!- keeto [~keeto@121.54.92.149] has joined #go-nuts
18:06 -!- Venom_X [~pjacobs@cpe-72-177-102-160.austin.res.rr.com] has quit [Quit:
Venom_X]
18:08 -!- Venom_X [~pjacobs@rrcs-71-41-4-194.sw.biz.rr.com] has joined #go-nuts
18:09 -!- oal [~olav@5.79-160-122.customer.lyse.net] has quit [Read error:
Connection reset by peer]
18:09 -!- jA_cOp [~yakobu@unaffiliated/ja-cop/x-9478493] has quit [Quit: Leaving]
18:29 -!- itrekkie [~itrekkie@ip72-200-104-177.tc.ph.cox.net] has joined #go-nuts
18:39 -!- alm [~alm@wnpgmb0516w-ad03-175-222.dynamic.mts.net] has quit [Ping
timeout: 240 seconds]
18:49 -!- aho [~nya@f051087135.adsl.alicedsl.de] has joined #go-nuts
18:52 -!- Cyprien_ [Cyprien@181-39.3-85.cust.bluewin.ch] has joined #go-nuts
19:04 < smw> if Read() is given a byte slice that has 0 size, will it expand
it up to capacity?
19:06 -!- path[l] [~path@122.167.241.122] has joined #go-nuts
19:09 -!- path[l] [~path@122.167.241.122] has quit [Read error: Connection reset
by peer]
19:09 -!- path[l] [~path@122.167.241.122] has joined #go-nuts
19:17 -!- ako [~nya@g227091159.adsl.alicedsl.de] has joined #go-nuts
19:19 < plexdev> http://is.gd/9gk4h by [Robert Griesemer] in
go/src/pkg/go/scanner/ -- go/scanner: the position of '\n's chars must be the last
position of the current line
19:21 -!- aho [~nya@f051087135.adsl.alicedsl.de] has quit [Ping timeout: 264
seconds]
19:25 -!- pure_x01 [~pure@c83-248-3-188.bredband.comhem.se] has joined #go-nuts
19:25 <+iant> smw: no, it will just read up to the length of the slice, not
the capacity
19:28 -!- EthanG [~EthanG@sourcemage/guru/eekee] has joined #go-nuts
19:28 -!- EthanG [~EthanG@sourcemage/guru/eekee] has left #go-nuts []
19:33 -!- nanoo [~nano@95-89-189-46-dynip.superkabel.de] has joined #go-nuts
19:37 -!- pure_x01 [~pure@c83-248-3-188.bredband.comhem.se] has quit [Quit:
Leaving]
19:38 < gzmask> the slice is just a buffer
19:38 < gzmask> so if it's 0 size you reads nothing
19:39 -!- Eridius [~kevin@unaffiliated/eridius] has joined #go-nuts
19:39 -!- pure_x01 [~pure@c83-248-3-188.bredband.comhem.se] has joined #go-nuts
19:41 -!- Venom_X [~pjacobs@rrcs-71-41-4-194.sw.biz.rr.com] has quit [Quit:
Venom_X]
19:50 -!- g0bl1n [~anonymous@a213-22-237-221.cpe.netcabo.pt] has quit [Quit:
g0bl1n]
19:52 -!- carllerche [~carllerch@enginey-9.border1.sfo002.pnap.net] has joined
#go-nuts
19:58 -!- Project_2501 [~Marvin@dynamic-adsl-94-36-171-141.clienti.tiscali.it] has
quit [Quit: E se abbasso questa leva che succ...]
20:01 -!- jhnx [~bd732145@gateway/web/freenode/x-pqwimlcudkbtudsc] has quit [Ping
timeout: 252 seconds]
20:07 -!- path[l] [~path@122.167.241.122] has quit [Ping timeout: 246 seconds]
20:10 -!- XenoPhoenix
[27f8bae00d@cpc5-aztw24-2-0-cust39.aztw.cable.virginmedia.com] has quit [Ping
timeout: 260 seconds]
20:14 -!- path[l] [~path@122.167.241.122] has joined #go-nuts
20:17 -!- XenoPhoenix
[1814aa0e92@cpc5-aztw24-2-0-cust39.aztw.cable.virginmedia.com] has joined #go-nuts
20:23 -!- pure_x01 [~pure@c83-248-3-188.bredband.comhem.se] has quit [Quit:
Leaving]
20:25 -!- afurlan [~afurlan@scorpion.mps.com.br] has quit [Remote host closed the
connection]
20:25 -!- pure_x01 [~53f803bc@gateway/web/freenode/x-tflbbpwsmwzghjul] has joined
#go-nuts
20:26 -!- gzmask [~ray@corwin.cat.uregina.ca] has left #go-nuts []
20:27 -!- geocalc [~geobsd@lns-bzn-32-82-254-3-213.adsl.proxad.net] has joined
#go-nuts
20:27 -!- Ortzman [~ortzinato@cpe-065-191-006-129.nc.res.rr.com] has quit [Quit: (
www.nnscript.com :: NoNameScript 4.22 :: www.esnation.com )]
20:29 -!- GeoBSD [~geobsd@lns-bzn-27-82-248-63-252.adsl.proxad.net] has quit [Read
error: Operation timed out]
20:37 -!- KinOfCain [~KinOfCain@rrcs-64-183-61-2.west.biz.rr.com] has joined
#go-nuts
20:49 -!- jalmeida [~jalmeida@c9340a2e.virtua.com.br] has quit [Quit: Fui embora]
20:49 -!- Ortzinator [~ortzinato@cpe-065-191-006-129.nc.res.rr.com] has joined
#go-nuts
20:49 -!- Ortzinator [~ortzinato@cpe-065-191-006-129.nc.res.rr.com] has quit
[Changing host]
20:49 -!- Ortzinator [~ortzinato@unaffiliated/ortzinator] has joined #go-nuts
20:51 -!- pure_x01 [~53f803bc@gateway/web/freenode/x-tflbbpwsmwzghjul] has quit
[Quit: Page closed]
20:51 -!- ikke [~ikkibr@unaffiliated/ikkebr] has quit [Ping timeout: 240 seconds]
20:52 -!- Venom_X [~pjacobs@75-27-130-192.lightspeed.austtx.sbcglobal.net] has
joined #go-nuts
20:55 -!- ikke [~ikkibr@unaffiliated/ikkebr] has joined #go-nuts
20:56 -!- nanooo [~nano@95-89-189-46-dynip.superkabel.de] has joined #go-nuts
20:59 -!- nanoo [~nano@95-89-189-46-dynip.superkabel.de] has quit [Ping timeout:
260 seconds]
21:14 -!- Venom_X [~pjacobs@75-27-130-192.lightspeed.austtx.sbcglobal.net] has
quit [Quit: Venom_X]
21:21 < plexdev> http://is.gd/9gNoB by [Russ Cox] in 2 subdirs of go/ -- 8g:
make a[byte(x)] truncate x
21:29 -!- cmarcelo [~cmarcelo@enlightenment/developer/cmarcelo] has quit [Quit:
leaving]
21:29 -!- ikke [~ikkibr@unaffiliated/ikkebr] has quit []
21:30 -!- asmo [~asmo@c-f6c5e055.1155-1-64736c11.cust.bredbandsbolaget.se] has
quit [Remote host closed the connection]
21:31 -!- Ortzinator [~ortzinato@unaffiliated/ortzinator] has quit [Read error:
Connection reset by peer]
21:31 -!- asmo [~asmo@c-f6c5e055.1155-1-64736c11.cust.bredbandsbolaget.se] has
joined #go-nuts
21:34 -!- keeto [~keeto@121.54.92.149] has quit [Read error: Connection reset by
peer]
21:35 -!- keeto [~keeto@121.54.92.149] has joined #go-nuts
21:41 -!- stalled [~411@unaffiliated/stalled] has quit [Ping timeout: 260 seconds]
21:44 -!- stalled [~411@unaffiliated/stalled] has joined #go-nuts
21:47 -!- geocalc [~geobsd@lns-bzn-32-82-254-3-213.adsl.proxad.net] has quit
[Remote host closed the connection]
21:58 -!- nanoo [~nano@95-89-189-46-dynip.superkabel.de] has joined #go-nuts
22:00 -!- nanooo [~nano@95-89-189-46-dynip.superkabel.de] has quit [Ping timeout:
264 seconds]
22:04 -!- asmo [~asmo@c-f6c5e055.1155-1-64736c11.cust.bredbandsbolaget.se] has
quit [Remote host closed the connection]
22:06 -!- Mopman [~mopman@29.16.be.static.xlhost.com] has quit [Quit: leaving]
22:08 < plexdev> http://is.gd/9gYjF by [Ian Lance Taylor] in 3 subdirs of
go/src/cmd/ -- Add -r option to 6l/8l/5l.
22:09 -!- Ortzinator [~ortzinato@cpe-065-191-006-129.nc.res.rr.com] has joined
#go-nuts
22:09 -!- Ortzinator [~ortzinato@cpe-065-191-006-129.nc.res.rr.com] has quit
[Changing host]
22:09 -!- Ortzinator [~ortzinato@unaffiliated/ortzinator] has joined #go-nuts
22:13 -!- scm [justme@c178003.adsl.hansenet.de] has quit [Ping timeout: 245
seconds]
22:15 -!- scm [~svencm@c190200.adsl.hansenet.de] has joined #go-nuts
22:17 -!- g0bl1n [~anonymous@a213-22-237-221.cpe.netcabo.pt] has joined #go-nuts
22:24 < plexdev> http://is.gd/9h27Q by [Russ Cox] in go/src/cmd/8g/ -- 8g:
fix out of register bug in byte(x) code
22:28 -!- idea_squirrel [~ct2rips@77-21-31-45-dynip.superkabel.de] has quit [Read
error: Connection reset by peer]
22:47 < smw> can someone tell me how to compare two byte slices?  I tried
buf == []byte("250") but I got: invalid operation: (buf[0:3]) == (slice literal)
(type []uint8 == []uint8)
22:49 < sladegen> smw: bytes.Equal?
22:50 -!- nanoo [~nano@95-89-189-46-dynip.superkabel.de] has quit [Quit: Leaving]
22:51 < smw> sladegen: thanks.  What is it that you can do string == string
but not []uint8 == []uint8
22:51 < smw> ?
22:52 < smw> why is it*
22:52 < sladegen> generic undecidedness?
22:53 < smw> what does that mean?
22:54 < sladegen> some things are built into the language as generics...
some are not.
22:55 < smw> hm...
22:55 * sladegen hmms: static typing begets partial generics...
22:56 < plexdev> http://is.gd/9h8O5 by [Robert Griesemer] in
go/src/pkg/go/parser/ -- go/parser cleanup: remove some state by writing more
functional code
22:56 < plexdev> http://is.gd/9h8Om by [Russ Cox] in go/ -- A+C: add Raif S.
Naffah (individual CLA)
23:01 -!- fwiffo [~fwiffo@unaffiliated/fwiffo] has joined #go-nuts
23:02 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
23:03 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Remote
host closed the connection]
23:05 -!- [Pete_27] [~noname@115-64-1-61.static.tpgi.com.au] has joined #go-nuts
23:08 -!- Daminvar [~Daminvar@129.21.121.107] has quit [Quit: Leaving]
23:14 -!- newsham [~chat@thenewsh.com] has joined #go-nuts
23:15 < newsham> does golang have any of these?  1) multi-precision numbers
(bignums), 2) secure random number generators, 3) openssl bindings (particular for
those earlier two) ?
23:15 < smw> I know it has #1
23:15 -!- General13372 [~support@71-84-247-187.dhcp.gldl.ca.charter.com] has
joined #go-nuts
23:15 < newsham> is #1 a builtin?  or a library?
23:15 < smw> number 2 I know nothing about
23:15 < smw> bignum lib
23:16 < smw> but the lib comes with the compiler
23:16 < newsham> so standard library.
23:16 < smw> yeah
23:16 < smw> number 3 is probably in a std lib
23:16 -!- Venom_X [~pjacobs@cpe-67-9-131-167.austin.res.rr.com] has joined
#go-nuts
23:17 < smw> newsham: http://golang.org/pkg/crypto/
23:17 < smw> newsham: it has a "rand" and "bignum" package
23:17 < smw> http://golang.org/pkg/
23:18 < newsham> crypto doesnt seem to have secure rand lib that i see
23:18 < smw> is rand secure?
23:19 < smw> I do not know enough about what a "secure" random lib is
23:19 < smw> http://golang.org/pkg/rand
23:19 < newsham> if it doesnt say it is, it probably isnt.
23:19 < newsham> description says pseudo-random
23:19 < newsham> doesnt mention security guarantees
23:19 < newsham> but there's rsa in the crypto lib, which would require some
secre random values
23:19 -!- General1337 [~support@71-84-247-187.dhcp.gldl.ca.charter.com] has quit
[Ping timeout: 265 seconds]
23:20 < smw> pseudo-random does not mean anything.  Any random num generator
(even if it is "secure") is pseudo-random
23:20 < newsham> "rand io.Reader" is parameter to many rsa functions
23:20 < newsham> hmmm
23:21 < newsham> smw: not entirely.  secure random number generators often
mix in real randomness
23:21 < newsham> as measured by physical devices
23:21 < smw> newsham: but that would require certain devices
23:21 < smw> and you could use that as the seed
23:22 < smw> my guess is that it is a copy of whatever the C random number
generator does
23:22 < newsham> there is no secure standard C random number generator.
23:22 < newsham> libraries like openssl have functions for it, though.
23:23 < newsham> that make use of platform-specific features, like
/dev/random or mouse, process table, keyboard, etc..
23:23 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
23:23 < newsham> I wonder what crypto.rsa clients usually use to pass in to
the "rand io.Reader"
23:24 < smw> newsham: /dev/random?
23:24 < smw> newsham: is that "secure"?
23:24 < newsham> /dev/random and /dev/urandom on several platforms gives you
access to numbers generated in the kernel where they can mix in lots of
platform-specific sources of randomness (interupts, network traffic, keyboard,
etc)
23:24 < newsham> its designed to be, yah.
23:25 < newsham> wether it is or not is an impl detail :)
23:25 < smw> ok
23:25 < smw> lol
23:25 < smw> newsham: so...  is it secure enough for you?  :-P
23:26 < newsham> but they do things like measure stuff, hash measurements,
put it into an entropy pool, and generate random values by doing crypto operations
(ie.  rc4) on that pool
23:26 < newsham> yah, i'd be fine with that..  but I would prefer librar/api
that is portable across platforms
23:26 < newsham> I cant rely on something like /dev/random existing
23:27 < smw> ok, then make one :-P.
23:27 < newsham> well, if there are openssl bindings then i might not have
to
23:27 < smw> I will look quickly
23:27 < newsham> also, I'm not using golang right now..  asking as part of
me figuring out if i should
23:28 < sladegen> ask users to relax and bang on the keyboard like a
monkey...
23:28 < plexdev> http://is.gd/9hg6O by [Raif S. Naffah] in 2 subdirs of
go/src/pkg/ -- crypto/blowfish: new package
23:28 < newsham> :)
23:29 < smw> I think there are openssl bindings.  sladegen, where is the
page that has the list of bindings?
23:29 < smw> found it
23:29 < smw> http://go-lang.cat-v.org/library-bindings
23:30 < smw> guess not :-\
23:30 < newsham> eek, tls library is using currentTime to seed randomness.
http://golang.org/src/pkg/crypto/tls/handshake_server.go?h=random
23:31 < smw> wow
23:31 < smw> Even I know that is bad...
23:31 < newsham> oh, they're augmenting it with other stuff
23:31 < smw> ok
23:31 < newsham> wherever config.Rand comes from
23:33 < newsham> which comes from the "rand" package in the test cases
23:33 < newsham> hrmmm :(
23:33 * smw goes back to trying to make a smtp client library
23:33 < newsham> so basically library punts the problem to library clients
23:34 < smw> newsham: what would you do?
23:35 < smw> what would be your source of randomness?
23:35 < newsham> I just think there should be a library for that stuff that
is adjusted for each platform.
23:35 < newsham> like how openssl does it
23:35 < smw> ok
23:35 < newsham> so that the library clients dont have to worry about it
themselves
23:36 < smw> so it would use /dev/random on linux, and something else on
windows?
23:36 < newsham> ie.  on platforms that have it, just open and read
/dev/random or /dev/urandom
23:36 < newsham> on other platforms, measure some stuff and mix it into an
entropy pool occasionally
23:36 < smw> what is the diff between random and urandom?
23:37 < newsham> one will give you numbers even if new entropy hasnt been
added to the system
23:37 < newsham> the other will block until sufficient entropy is available
23:37 < newsham> thats platform-specific stuff
23:39 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Read
error: Connection reset by peer]
23:40 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
23:40 < newsham> http://en.wikipedia.org/wiki//dev/random
23:50 -!- Venom_X [~pjacobs@cpe-67-9-131-167.austin.res.rr.com] has quit [Quit:
Venom_X]
23:52 -!- g0bl1n [~anonymous@a213-22-237-221.cpe.netcabo.pt] has quit [Quit:
g0bl1n]
--- Log closed Sat Feb 27 00:00:18 2010