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

--- Log opened Wed Oct 13 00:00:00 2010
--- Day changed Wed Oct 13 2010
00:00 < SirPsychoS> iant: they just removed the exp/iterable package today,
along with the list.List·Iter() method, so it looks like they're un-recommending
that method
00:00 <+iant> the problem is that it's not very efficient
00:00 < SirPsychoS> yep, exactly what the commit message said
00:00 <+iant> but I don't nkow of any replacement for it
00:00 <+iant> and I'm not even sure what a replacement would look like
00:00 < nsf> good old for ;; loop
00:02 < hallas> wrote a 80 line long array implementation with Push(),
Get(), RemoveIndex(), Remove(), Push(), Length() and now Slice() for the range
statement
00:02 < plexdev> http://is.gd/fZo2z by [Rob Pike] in go/doc/ -- Effective
Go: update examples to use new logging interface.
00:02 < hallas> oops wrote push two times
00:02 <+iant> DoublePush
00:03 < hallas> hehe
00:03 <+iant> every array needs that
00:03 < hallas> included a constructor NewArray(vs...  interface{}) (a
*Array) {}
00:03 < skelterjohn> what does your array do that's interesting?
00:03 < skelterjohn> and don't take that as a challenge - i'm just
interested
00:03 < SirPsychoS> PushHard(e interface{}) // pushes its argument onto the
end of the list, then pushes a zero-value of the same type
00:05 < hallas> skelterjohn: dont know, it just solves a simple need for me
00:05 < SirPsychoS> also, that sounds a lot like container/vector
00:05 < hallas> skelterjohn: i think most people have their own push and
remove
00:05 < skelterjohn> yeah - i was just thinking it sounds a lot like
container/vector
00:06 < skelterjohn> container/vector.Vector can work with range because
it's a subtype of []interface{}
00:06 < skelterjohn> so if you have your array really be "type Array
[]interface{}" then it will work with range
00:07 < hallas> yeah, just realized that
00:07 < hallas> that that also answers my question from before
00:07 < skelterjohn> hooray
00:08 < hallas> can vector only hold string, int?
00:08 < SirPsychoS> speaking of containers - is there any interest in a
package container/graph (or, say, graph/adjlist)?  I've been working on one as
(part of) a CS assignment, and it's beginning to shape up
00:08 < SirPsychoS> hallas: I believe there's StringVector, IntVector, and
(interface{})Vector
00:08 < SirPsychoS> and {String,Int}Vector.go are generated from Vector.go,
just replacing interface{} with string and int
00:09 < skelterjohn> SirPsychoS: I think it would be nice to have as a third
party library
00:09 < skelterjohn> i don't feel that it is a common enough need to warrant
being in the core
00:09 < SirPsychoS> libstdc++ doesn't have graphs either, does it?
00:09 < hallas> SirPsychoS: so vector is actually everything I need :)
00:10 < skelterjohn> SirPsychoS: I wouldn't know
00:10 < Tv> SirPsychoS: perhaps make the name more explicit, what kind of
graphs it is for, how does it store them, etc
00:10 -!- Venom_X [~pjacobs@66.54.185.131] has quit [Quit: Venom_X]
00:10 < Tv> adjlist sounds better than graph, in my mind
00:11 < SirPsychoS> Tv: yeah, that would allow for graph/adjmatrix and
graph/edgelist to exist as well
00:12 < SirPsychoS> hmm, package graph defines interface Graph { AddVertex,
DelVertex, etc.} and then graph/* implement 3 versions of it
00:12 < skelterjohn> <plug> if you want to do an adjmatrix, i suggest
gomatrix.googlecode.com </self-plug>
00:13 < SirPsychoS> heh, matrix being [][]bool, not an actual linear-algebra
matrix
00:14 < SirPsychoS> or I guess [][]interface{} to allow edge labels
00:14 < skelterjohn> SirPsychoS: you don't like edge weights?
00:15 < SirPsychoS> sure, but what if you want your edges to be labeled with
strings, or struct {x,y int}s, or whatever else you need?
00:15 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has joined
#go-nuts
00:15 < skelterjohn> i guess, but using numbers as edge labels is a very
common use case
00:15 < SirPsychoS> I mean, dijkstra's algorithm is fairly meaningless for
string-labeled graphs
00:16 < SirPsychoS> lol
00:16 < SirPsychoS> very common, but not the only
00:16 < skelterjohn> and it generalizes the bool representation
00:17 < SirPsychoS> like, weight < 0 means no edge?
00:17 < skelterjohn> depends on context
00:17 < skelterjohn> if it's representing distances, for instance, infinity
00:18 -!- b00m_chef [~watr@66.183.100.197] has quit [Ping timeout: 265 seconds]
00:18 -!- littlebobby [~bob@unaffiliated/littlebobby] has quit [Quit: Ex-Chat]
00:19 < SirPsychoS> do IEEE floats have a value for infinity?
00:19 < skelterjohn> -math.Log(0)?  :)
00:19 < skelterjohn> certainly if you try to fmt.Printf that, it will say
+inf
00:19 <+iant> SirPsychoS: yes
00:21 -!- Tv [~tv@gige.bur.digisynd.com] has quit [Ping timeout: 252 seconds]
00:21 -!- Ritterbeck [~Ritterbec@cpe-66-61-33-23.neo.res.rr.com] has joined
#go-nuts
00:22 < SirPsychoS> ehh, well, for now it's just an adjacency list
implementation - i may or may not deal with other implementations later
00:22 < SirPsychoS> unfortunately this is all in subversion (my backwards CS
department still uses it for some reason)
00:24 < nsf> staring at gccgo source code, looks like everything is fine
with multifile packages
00:24 < nsf> :\
00:24 <+iant> well, sure, the Go library has a lot of them
00:25 <+iant> perhaps this is something specific to package main
00:25 < nsf> maybe
00:34 < plexdev> http://is.gd/fZpOW by [Rob Pike] in go/src/pkg/log/ -- log:
reduce allocations
00:36 < nsf> I guess I'll build debug build tomorrow and try that with a
debugger
00:38 < nsf> it's hard to figure out something by just staring at C++ code
00:38 < nsf> contains much more indirections than C code
00:41 < SirPsychoS> alright, api spec question: if you call a function
called DelUndirectedEdge(a,b) on a graph, and an edge only exists from a to b, but
not from b to a, would you expect it to fail, or would you expect it to delete the
edge from a to b and succeed?
00:42 < skelterjohn> i would expect a graph to be either directed or
undirected from the get-go
00:42 < KirkMcDonald> SirPsychoS: If it is a digraph, I would expect that to
fail.
00:42 < KirkMcDonald> SirPsychoS: Um.
00:43 < KirkMcDonald> But the "Undirected" in there confuses me.
00:43 < skelterjohn> directed graphs and undirected graphs are different
animals
00:43 < KirkMcDonald> Yes,.
00:43 < SirPsychoS> well, this graph is directed
00:43 < skelterjohn> then saying DelUndirectedEdge shouldn't be one of its
methods
00:43 < KirkMcDonald> SirPsychoS: Then why does it have a method dealing
with undirected edges?
00:43 < SirPsychoS> but the Undirected functions just add both directions
00:43 < KirkMcDonald> SirPsychoS: I see.
00:43 < skelterjohn> i think that's a bad idea
00:43 < SirPsychoS> so you can use it easily as if it were an undirected
graph
00:43 < KirkMcDonald> I'd probably call it "DelBothEdges()
00:43 < KirkMcDonald> "
00:43 < SirPsychoS> hmm, why's it bad?
00:44 < KirkMcDonald> Or whatever.
00:44 < skelterjohn> digraphs have digraph operations
00:44 < skelterjohn> undirected graphs and digraphs have no subset/superset
relation
00:44 < skelterjohn> they're just different things.  though they're related,
clearly
00:46 < SirPsychoS> why can't we say that undirected graphs are a subset of
directed graphs where (for all x, y that are vertices, edge(x,y) -> edge(y,x)
and label(x,y)==label(y,x)) ?
00:46 < skelterjohn> not convention, that's all
00:46 < SirPsychoS> ah
00:47 < SirPsychoS> s/->/iff/
00:47 < skelterjohn> this isn't really convincing, but in graphical models
of probability distributions, there are families of distributions that can be
expressed by directed graphical models but not undirected graphical models, and
vice versa
00:49 -!- mikespook [~mikespook@219.137.254.247] has joined #go-nuts
00:49 < SirPsychoS> so shall I discard the Add/DelUndirectedEdge methods and
make it a pure digraph?
00:50 < KirkMcDonald> I certainly wouldn't give these methods those names.
00:50 < skelterjohn> yeah - that's a good wait to put it
00:51 < SirPsychoS> well, they're not really that useful - all they do
internally is call AddEdge twice
00:55 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
00:57 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has joined #go-nuts
01:00 -!- mikespook1 [~mikespook@58.61.203.140] has joined #go-nuts
01:00 -!- mikespook [~mikespook@219.137.254.247] has quit [Ping timeout: 252
seconds]
01:00 -!- mikespook1 [~mikespook@58.61.203.140] has quit [Client Quit]
01:02 -!- enherit [~enherit@cpe-98-149-170-48.socal.res.rr.com] has quit [Quit:
leaving]
01:04 -!- iant [~iant@67.218.105.113] has quit [Quit: Leaving.]
01:06 < plexdev> http://is.gd/fZrDI by [Nigel Tao] in go/src/pkg/image/ --
image: add an offset to Tiled.
01:08 < hallas> good night (from denmark, eu)
01:08 < skelterjohn> night
01:08 -!- hallas [~hallas@x1-6-30-46-9a-b2-c5-1f.k891.webspeed.dk] has left
#go-nuts []
01:13 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has joined #go-nuts
01:29 -!- cthom [~cthom@166.196.69.138] has joined #go-nuts
01:37 -!- cthom [~cthom@166.196.69.138] has quit [Quit: Yaaic - Yet another
Android IRC client - http://www.yaaic.org]
01:38 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
01:39 -!- littlebobby [~bob@unaffiliated/littlebobby] has joined #go-nuts
01:41 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has joined #go-nuts
01:42 -!- mode/#go-nuts [+v iant] by ChanServ
01:43 * exch fixed bug in russ's gosqlite thingy
01:48 -!- adg [~nf@124.169.158.192] has quit [Read error: Connection reset by
peer]
01:48 -!- adg [~nf@210-84-53-30.dyn.iinet.net.au] has joined #go-nuts
01:49 -!- mode/#go-nuts [+o adg] by ChanServ
01:53 -!- littlebobby [~bob@unaffiliated/littlebobby] has quit [Quit: Ex-Chat]
02:02 -!- mat_ [~mat@mx3.absolight.net] has quit [Read error: Connection reset by
peer]
02:11 -!- joyer [~user@59.41.223.18] has joined #go-nuts
02:24 -!- aho [~nya@fuld-4d00d761.pool.mediaWays.net] has quit [Ping timeout: 245
seconds]
02:25 < uriel> exch: congrats :)
02:30 -!- aho [~nya@fuld-4d00d6c2.pool.mediaWays.net] has joined #go-nuts
02:48 -!- jcao219 [~jcao219@pool-173-74-61-111.dllstx.fios.verizon.net] has quit
[Ping timeout: 240 seconds]
02:50 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has quit [Ping timeout: 245 seconds]
02:52 -!- scarabx [~scarabx@c-76-19-43-200.hsd1.ma.comcast.net] has quit [Quit:
This computer has gone to sleep]
02:52 -!- jcao219 [~jcao219@pool-173-74-61-111.dllstx.fios.verizon.net] has joined
#go-nuts
03:01 -!- jcao219 [~jcao219@pool-173-74-61-111.dllstx.fios.verizon.net] has quit
[Ping timeout: 245 seconds]
03:04 -!- Kylarr [Kylarr@122-148-63-115.static.dsl.dodo.com.au] has joined
#go-nuts
03:06 -!- rejb [~rejb@unaffiliated/rejb] has quit [Ping timeout: 276 seconds]
03:11 -!- noktoborus [~noktoboru@host-208-107.hosts.vtc.ru] has joined #go-nuts
03:14 -!- mat_ [~mat@mx3.absolight.net] has joined #go-nuts
03:14 < Ritterbeck> Anyone have an interest in building a quantitative
finance library in Go?
03:15 <@adg> what does that mean?
03:15 < Ritterbeck> Are you familiar with Quantlib?
03:16 < Ritterbeck> It is a library in C++ for valuing different financial
products
03:17 -!- jcao219 [~jcao219@pool-173-74-61-111.dllstx.fios.verizon.net] has joined
#go-nuts
03:18 -!- Ritterbeck [~Ritterbec@cpe-66-61-33-23.neo.res.rr.com] has quit [Quit:
Leaving]
03:25 -!- jcao219 [~jcao219@pool-173-74-61-111.dllstx.fios.verizon.net] has quit
[Ping timeout: 245 seconds]
03:37 < SirPsychoS> is the compiler smart enough to optimize out the memory
accesses if you do "for i, _ := range someslice" ?
03:37 <@adg> No, I'm not.  I've not done any work in the financial sector.
03:37 <@adg> SirPsychoS: what do you mean by "memory accesses" ?
03:39 < SirPsychoS> "for i, v := range someslice" needs to copy from ram
into v len(someslice) times
03:39 < SirPsychoS> but "for i, _ := range someslice" shouldn't need to do
that at all
03:39 < plexdev> http://is.gd/fZCbA by [Andrew Gerrand] in
go/src/pkg/runtime/ -- runtime: remove done TODO from SetFinalizer
03:39 <@adg> either way the value is registerized
03:39 < SirPsychoS> aka is that as efficient as "for i:=0;
i<len(someslice); i++"
03:40 <@adg> i can't say definitively, but i would imagine so
03:40 <@adg> i bet if you benchmarked the two approaches you would find the
difference negligable
03:44 -!- Eridius [~kevin@unaffiliated/eridius] has quit [Ping timeout: 260
seconds]
04:04 -!- aho [~nya@fuld-4d00d6c2.pool.mediaWays.net] has quit [Quit:
EXEC_over.METHOD_SUBLIMATION]
04:31 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has joined #go-nuts
04:42 -!- fabled [~fabled@mail.fi.jw.org] has joined #go-nuts
04:42 -!- xuser [~xuser@unaffiliated/xuser] has joined #go-nuts
04:49 -!- Arrow55 [~Arrow@bas9-quebec14-1168093772.dsl.bell.ca] has joined
#go-nuts
04:50 < Arrow55> Quick Question, I want some advice on a project that I've
already reported to Go Nuts a while back, should I start a new post about it?
04:50 < Arrow55> Or should I just reply on the old thread?
04:54 -!- dj2 [~dj2@2002:63ec:1a4e:0:21f:5bff:fe35:feb5] has quit [Remote host
closed the connection]
04:58 -!- scm [scm@d071101.adsl.hansenet.de] has quit [Read error: Operation timed
out]
04:59 -!- Arrow55 [~Arrow@bas9-quebec14-1168093772.dsl.bell.ca] has quit [Quit:
Leaving]
04:59 -!- drd [~eric@compassing.net] has joined #go-nuts
05:00 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
255 seconds]
05:01 -!- scm [scm@d071196.adsl.hansenet.de] has joined #go-nuts
05:30 -!- wmohchi [~wmohchi@60.247.97.98] has joined #go-nuts
05:33 -!- dju [dju@fsf/member/dju] has joined #go-nuts
05:36 -!- dju [dju@fsf/member/dju] has quit [Max SendQ exceeded]
05:37 -!- dju [dju@fsf/member/dju] has joined #go-nuts
05:45 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
06:14 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
240 seconds]
06:17 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
06:28 -!- Project_2501 [~Marvin@82.84.94.184] has joined #go-nuts
06:28 -!- fabled [~fabled@mail.fi.jw.org] has quit [Ping timeout: 240 seconds]
06:29 -!- lmoura__ [~lauromour@186.212.106.35] has joined #go-nuts
06:31 -!- lmoura_ [~lauromour@186.212.107.220] has quit [Read error: Operation
timed out]
06:40 -!- wjlroe [~will@78-86-14-131.zone2.bethere.co.uk] has joined #go-nuts
06:42 -!- ExtraSpice [~XtraSpice@78-57-137-162.static.zebra.lt] has joined
#go-nuts
06:46 -!- littlebobby [~bob@unaffiliated/littlebobby] has joined #go-nuts
06:51 -!- fabled [~fabled@83.145.235.193] has joined #go-nuts
07:16 -!- tensorpudding [~user@99.148.202.191] has quit [Read error: Connection
reset by peer]
07:18 < SirPsychoS> edit_test.go:13: cannot use g (type *graph.Graph) as
type *graph.Graph in function argument
07:18 < SirPsychoS> errr, what?
07:21 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has quit [Quit: Morten.  Desu~]
07:23 -!- tensorpudding [~user@99.148.202.191] has joined #go-nuts
07:24 < SirPsychoS> ahhh they weren't the same package...
"../graph/_obj/graph" and "graph"
07:34 -!- wjlroe [~will@78-86-14-131.zone2.bethere.co.uk] has quit [Quit: Computer
has gone to sleep]
07:41 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
07:56 -!- araujo [~araujo@192.100.124.156] has joined #go-nuts
07:56 -!- araujo [~araujo@192.100.124.156] has quit [Changing host]
07:56 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
07:58 -!- photron [~photron@port-92-201-126-85.dynamic.qsc.de] has joined #go-nuts
08:13 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has joined
#go-nuts
08:17 -!- wrtp [~rog@92.17.85.103] has joined #go-nuts
08:19 -!- wjlroe [~will@212.169.34.114] has joined #go-nuts
08:33 -!- SRabbelier [~SRabbelie@ip138-114-211-87.adsl2.static.versatel.nl] has
joined #go-nuts
08:36 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
08:59 -!- rlab [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller,
Faster, Easier.  http://miranda-im.org]
09:10 -!- teralaser [~teralaser@unaffiliated/teralaser] has joined #go-nuts
09:15 -!- jmettraux [~jmettraux@211.19.55.177] has quit [Remote host closed the
connection]
09:18 -!- gabriel9 [~gabriel9@93.157.192.28] has quit [Read error: Connection
reset by peer]
09:21 -!- gabriel9 [~gabriel9@93.157.192.28] has joined #go-nuts
09:26 -!- ikaros [~ikaros@dslb-188-097-076-206.pools.arcor-ip.net] has joined
#go-nuts
09:30 -!- skejoe [~skejoe@188.114.142.231] has joined #go-nuts
09:31 -!- virtualsue [~chatzilla@nat/cisco/x-wzrvguvnkexycjuy] has joined #go-nuts
09:38 -!- peterdn [~peterdn@dhcp-110-228.new.ox.ac.uk] has joined #go-nuts
09:43 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 276
seconds]
09:44 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
09:49 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 252
seconds]
09:51 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
09:57 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 240
seconds]
10:41 -!- fabled [~fabled@83.145.235.193] has quit [Quit: Ex-Chat]
10:45 -!- littlebobby [~bob@unaffiliated/littlebobby] has quit [Quit: Ex-Chat]
10:47 -!- SirPsychoS [~sp@c-24-13-132-255.hsd1.il.comcast.net] has quit [Ping
timeout: 250 seconds]
10:53 -!- fabled [~fabled@mail.fi.jw.org] has joined #go-nuts
10:55 -!- joyer [~user@59.41.223.18] has quit [Ping timeout: 240 seconds]
10:58 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #go-nuts
11:01 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
11:02 -!- virtualsue [~chatzilla@nat/cisco/x-wzrvguvnkexycjuy] has quit [Ping
timeout: 250 seconds]
11:05 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 245
seconds]
11:06 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
11:11 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 245
seconds]
11:12 -!- artefon [~thiago@189.59.157.229.dynamic.adsl.gvt.net.br] has joined
#go-nuts
11:15 -!- mduft [~mduft@gentoo/developer/mduft] has quit [Remote host closed the
connection]
11:18 -!- mduft [~mduft@gentoo/developer/mduft] has joined #go-nuts
11:26 -!- napsy_ [~luka@88.200.96.18] has joined #go-nuts
11:40 -!- rlab [~Miranda@91.200.158.34] has joined #go-nuts
11:43 -!- Kylarr [Kylarr@122-148-63-115.static.dsl.dodo.com.au] has quit []
11:45 -!- Project_2501 [~Marvin@82.84.94.184] has quit [Quit: E se abbasso questa
leva che succ...]
11:58 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
12:05 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has joined
#go-nuts
12:06 -!- virtualsue [~chatzilla@nat/cisco/x-ydliebbldtjvyuwa] has joined #go-nuts
12:11 -!- Whip [3aaf1956@gateway/web/freenode/ip.58.175.25.86] has joined #go-nuts
12:12 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
12:15 < Whip> I have a lot of trouble thinking outside of the traditional
object oriented model of programming in Go.
12:15 < Whip> It's almost like there is too much freedom.
12:15 < Whip> Anyone else experience this?
12:16 -!- Kylarr [Kylarr@122-148-63-115.static.dsl.dodo.com.au] has joined
#go-nuts
12:16 < exch> nope.  It took some getting used to the move away from the old
fashioned OOP model, but it's been worth it
12:20 -!- thiago__ [~thiago@189.26.196.166.dynamic.adsl.gvt.net.br] has joined
#go-nuts
12:21 < Whip> I wish there were generics, otherwise I feel like it's not
/really/ worth investing a lot of effort into getting good at it.
12:22 -!- artefon [~thiago@189.59.157.229.dynamic.adsl.gvt.net.br] has quit [Ping
timeout: 240 seconds]
12:22 < skelterjohn> generics are something that i believe will happen one
day
12:22 < skelterjohn> in the mean time, you can use interface{} to write that
code
12:23 < skelterjohn> i did experience the OO->IO phase shift, though
12:23 < exch> possibly.  They have not been denied outright, it's just
difficult to find a generics solution that doesn't mess up the language or
compiler too much
12:23 < skelterjohn> at first i tried to cram java OO on top of go
12:23 < nsf> I don't understand people which come here and complain about
the go language, no one forces you to use it (yet, hahahaha)
12:24 < exch> :P
12:24 < skelterjohn> no one forces you to listen to their complaints, either
=p
12:24 < skelterjohn> they're just curious and want to talk about the
language
12:24 < skelterjohn> i think it's a good thing
12:24 < nsf> well, unforunately I have to read everything on this channel
12:24 < skelterjohn> to be otherwise would be a signal that no one cares
12:24 < exch> it also helps to bring out those issues that yield the most
interest
12:24 < nsf> of course I can ignore that
12:25 -!- hallas [~hallas@x1-6-30-46-9a-b2-c5-1f.k891.webspeed.dk] has joined
#go-nuts
12:25 < Whip> I'm interested in how others dealt with the change of
thinking.
12:26 < nsf> personally I have trouble thinking in terms of OOP
12:26 < skelterjohn> someone showed me a different way to do it, and then i
got it
12:26 < nsf> Go's object model is fine to me
12:26 < Whip> I an totally sold on Go's features, I want it to be my
language of choice.
12:26 < Whip> *am
12:27 < exch> I 'dealt' with it by just reading a lot of the Go package code
and just trying stuff out
12:27 < hallas> I understood that objects did not exists in Go
12:27 < skelterjohn> the idea that, in java or C++, people spend hours
wasting time designing class hierarchies really resonated with me
12:27 < skelterjohn> now instead of relating classes together, i just write
code that does things
12:27 < hallas> meant for @nsf
12:27 < exch> Go's simple syntax and strict style enforcement make it easy
to read other people's code
12:27 < skelterjohn> interfaces help generalize things that do things
12:27 < skelterjohn> that's all
12:28 < nsf> hallas: define "object"
12:28 < hallas> nsf: you said object model, im just curious what you mean
12:28 < hallas> nsf: I jumped into the convo ;) so i dont know anything
12:28 < skelterjohn> "no, *you* explain yourself first!"
12:28 < skelterjohn> :)
12:28 < nsf> I meant the features in Go which help me thinking in terms of
objects
12:28 < nsf> e.g.  interfaces, methods
12:28 < hallas> receivers
12:29 < nsf> channels as well
12:29 < skelterjohn> a method is a function with a receiver
12:29 -!- Guest53035 [~luka@88.200.96.18] has quit [Ping timeout: 265 seconds]
12:30 < hallas> skelterjohn: no arguing there
12:31 < hallas> what feature about go do you guys like the most (answer in
one word or two)
12:31 < hallas> ?
12:31 < skelterjohn> go.
12:31 < Whip> Goroutines.
12:31 < exch> interfaces
12:31 < skelterjohn> the go keyword, that is
12:32 < exch> the absence of complicated type hierarchies is bliss.  You can
just get on with the important stuff
12:32 < nsf> I like the absence of type hierarchies
12:33 < nsf> now if I see a language which supports traditional inheritance,
I won't even learn it
12:33 < nsf> waste of time
12:33 < hallas> I like that i can group expressions
12:34 < Whip> Group?
12:34 < hallas> Group = "(" Expression ")" .
12:34 < Whip> This is new to me.
12:35 < hallas> simple thing, but saves time and makes the code look
prettier
12:35 < skelterjohn> is this something more than "a = (b+c)" vs "a = b+c"?
12:36 < hallas> i think I copy pasted the wrong grammar
12:36 < nsf> I think he means: a, b = 1, 2
12:36 < Whip> Oh that, yes that's very handy.
12:36 < skelterjohn> yeah i like that too
12:37 < hallas> =)
12:37 < skelterjohn> python has that
12:37 < Whip> I like how it has anonymous functions.
12:37 < Whip> That was something lacking from C++ I found.
12:38 < hallas> can you do
12:38 < hallas> go (
12:38 < hallas> func {}()
12:38 < hallas> func {}()
12:38 < hallas> )
12:38 < hallas> ?
12:39 < hallas> havent got a compiler around atm
12:39 < Whip> What's wrong with go func{}() twice?
12:39 < hallas> saves time if you're starting a bunch of routines
12:39 < skelterjohn> hallas: golang.org has a playground you can type code
into and compile/run
12:40 < skelterjohn> hallas: the word "go" has as many characters as two
parentheses
12:40 < skelterjohn> and you have more carriage returns
12:41 < skelterjohn> though i realize that in the limit there would be fewer
12:41 < hallas> skelterjohn: at compiler level, the statement should be
faster to work with
12:41 < Whip> I tried, you can't do it.
12:41 < hallas> skelterjohn: but i wont bet anything on it :) just theory
12:42 < skelterjohn> i think it's a fairly uncommon use-case
12:42 -!- sacho [~sacho@82.137.65.22] has quit [Read error: Connection reset by
peer]
12:42 < skelterjohn> and that kind of (\n\n) stuff works only outside of
functions, right now
12:42 < skelterjohn> i don't see that changing
12:42 < hallas> ok
12:43 < Whip> I wonder what kind of complications generics brings.
12:43 -!- sacho [~sacho@95-42-85-213.btc-net.bg] has joined #go-nuts
12:44 < skelterjohn> i'm writing a post to the ml right now
12:44 < skelterjohn> i think i have a pretty simple approach
12:44 < skelterjohn> that wouldn't require a lot of work to implement
12:44 < skelterjohn> i assume
12:44 < skelterjohn> i'm not familiar with the compiler code, though
12:45 < Whip> The reluctance to make them part of the language must come
from the odd cases where "correct" behaviour gets ambiguous I imagine.
12:46 < Whip> What's the ml?
12:46 < skelterjohn> mailing list
12:47 < Whip> Heh, "go-crazy", is that an experimental compiler?
12:49 < skelterjohn> ?
12:49 < Whip> One of the posts says "unfortunately I haven't had the time to
implement it in go-crazy."
12:50 < skelterjohn> i'd need some context to guess what that's referring to
12:51 < Whip>
http://groups.google.com/group/golang-nuts/browse_thread/thread/de384624dd42d8bb
12:52 < hallas> when using go/printer, i cant seem to make my custom styler
use the html tags I specify, when printing
12:53 < hallas> probably wrong mode
12:53 < hallas> it sure was
12:54 < hallas> :)
13:00 -!- teralaser [~teralaser@unaffiliated/teralaser] has left #go-nuts []
13:02 -!- emmanueloga [~emmanuelo@190.244.15.163] has quit [Ping timeout: 264
seconds]
13:05 -!- Whip [3aaf1956@gateway/web/freenode/ip.58.175.25.86] has quit [Quit:
Page closed]
13:06 -!- napsy_ [~luka@88.200.96.18] has joined #go-nuts
13:16 < uriel> farcebook group for Go nuts:
http://www.facebook.com/home.php?sk=group_140911009288559
13:17 < soul9> uriel: you got an idea for storing tuples in a file?  i will
need to do some queries on it too..
13:18 < soul9> something like csv i could use, but then for each query i
have to traverse the file..
13:18 < soul9> using sqlite right now, but I hate it
13:18 -!- Fish9 [~Fish@86.65.182.207] has quit [Remote host closed the connection]
13:19 -!- Fish9 [~Fish@86.65.182.207] has joined #go-nuts
13:20 < uriel> soul9: depends on the nature of your dataset
13:20 < uriel> by the way, somebody should rewrite pq in Go ;)
13:21 < soul9> it's very simple: it's just 11 words per tuple
13:21 < soul9> so it's relatively short text for each element
13:21 < uriel> soul9: this days, you probably have enough ram to keep the
whole thing in memory
13:21 < uriel> and doing linear searches unless your query rate or data side
is ridiculously huge
13:22 < uriel> so just put it on a csv, load it into an array or map, and
you are done
13:22 < uriel> if you want to get really fancy, use json, the json package
is quite good
13:22 < uriel> but that is probably over-kill
13:22 < soul9> yeah
13:23 < soul9> yeah, csv...but then the query ..
13:23 < soul9> well, it can get ridiculously huge
13:23 < soul9> i have 23k tuples in the test dataset, and it'll grow by a
lot
13:24 < soul9> i don't want to depend on having 4G of RAM at least, that's
java's job..
13:24 < uriel> define 'a lot'
13:25 < uriel> even 100k of tuples is nothing
13:25 < uriel> or a million
13:25 -!- iant [~iant@adsl-71-133-8-30.dsl.pltn13.pacbell.net] has quit [Quit:
Leaving.]
13:26 < skelterjohn> not when you are doing linear search....
13:26 < soul9> :)
13:26 -!- emmanueloga [~emmanuelo@190.244.15.163] has joined #go-nuts
13:26 < soul9> i might get to one million
13:27 < soul9> but i don't think more, that's probably a sane upper limit
13:28 < skelterjohn> you need to look them up by some key?  that map can
use?
13:28 < soul9> er, i need to look them up on variable number of keys
13:29 < soul9> sometimes 10, sometimes only 2 keys are used
13:29 < skelterjohn> weird
13:29 < soul9> yes, string keys
13:29 < soul9> short and simple string keys
13:29 < skelterjohn> how does the variable-number-of-keys work?
13:29 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has quit [Remote host closed the connection]
13:30 < skelterjohn> and could you just concatonate the strings with a
special character for a single key?
13:30 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
13:30 < soul9> well, if the index is empty it's ignored
13:30 < soul9> no, i don't think so
13:30 < skelterjohn> if the index is empty?
13:30 < soul9> so there's 10 indexes
13:30 < soul9> and one content which makes the 11 element tuple
13:31 < uriel> skelterjohn: you can use a map as an index depending on the
data
13:31 < soul9> when i do a query, i query on either 2, 3...10 indexes
13:31 < skelterjohn> oh like a select
13:31 < skelterjohn> you have a relational database
13:31 < uriel> soul9: anyway, if you keep the thing sorted by the most
commonly used keys you probably should be fine
13:31 < soul9> so i don't think using a single concatenated string as index
would work, except if i use a regexp i guess
13:31 < skelterjohn> why not use sqlite?
13:32 < soul9> well, that's what i'm using right now, i was just wondering
wether uriel had an idea to replace it, since we share feelings for sqlite
13:32 -!- skejoe [~skejoe@188.114.142.231] has quit [Quit: Lost terminal]
13:32 < soul9> skelterjohn: which sqlite lib is the most mature?
13:33 < skelterjohn> russ cox made one
13:33 < skelterjohn> i haven't used any of them
13:33 < soul9> ah..ok so you don't know that most of them are pretty stale
;)
13:33 < exch> I'm using russ's lib in my current project
13:33 < soul9> oh?
13:33 < soul9> i started using kuronenko's one
13:33 < soul9> hmm
13:33 < exch> it's a simple API, but it works.  There's a 'bug' in there
though.  At leats I feel it's a bug, but Russ mentioned he did it on purpose
13:34 < soul9> ?
13:35 < exch> loading a blob from the database.  You get it as byte slice,
but once you call Stmt.Finalize(), that memory becomes invalid.  So you should
copy it before you call Finalize()
13:35 < soul9> ah, okay
13:35 < soul9> i don't use blobs anyways ;)
13:35 < exch> Cost me 3 hours of hair pulling to figure out where that was
coming from ><
13:35 < soul9> but i liked kuronenko's one because it has a test file from
which i can see how it's used..
13:36 < soul9> oh well, i'll try to figure out russ' one since it seems more
active
13:36 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving]
13:38 < exch> oh, there's also the issue of update/insert commands.
Basically anything that does not return a result set.  You have to call
sqlite.Next() after executing it, otherwise the command will not be comitted
13:38 -!- iant [~iant@67.218.105.113] has joined #go-nuts
13:38 -!- mode/#go-nuts [+v iant] by ChanServ
13:38 < mpl> soul9: I'm using it (not very extensively) in gogallery if you
want to check it out.
13:39 < mpl> soul9: russ's sqlib that is.
13:39 < exch>
http://github.com/jteeuwen/mudkip/blob/master/data/sqlite/store.go here's the use
case I have
13:40 < soul9> sweet!  thanks guys!
13:40 < mpl> http://code.google.com/p/gogallery/source/browse/sql.go
13:40 < soul9> great
13:46 -!- dj2 [~dj2@216.16.242.254] has joined #go-nuts
13:50 -!- nsf [~nsf@jiss.convex.ru] has quit [Quit: WeeChat 0.3.3]
13:53 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
13:57 -!- kanru [~kanru@61-30-10-70.static.tfn.net.tw] has quit [Ping timeout: 245
seconds]
13:59 -!- araujo [~araujo@213.28.64.66] has joined #go-nuts
13:59 -!- araujo [~araujo@213.28.64.66] has quit [Changing host]
13:59 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
14:07 -!- Guest75485 [~luka@88.200.96.18] has quit [Ping timeout: 240 seconds]
14:19 -!- littlebobby [~bob@unaffiliated/littlebobby] has joined #go-nuts
14:21 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has quit [Remote host closed the connection]
14:21 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
14:26 -!- ExtraSpice [~XtraSpice@78-57-137-162.static.zebra.lt] has quit [Quit:
Leaving]
14:35 -!- kanru [~kanru@118-168-234-222.dynamic.hinet.net] has joined #go-nuts
14:44 -!- rejb [~rejb@unaffiliated/rejb] has joined #go-nuts
14:47 -!- pn_ [~pn@HSI-KBW-078-042-071-073.hsi3.kabel-badenwuerttemberg.de] has
joined #go-nuts
14:50 -!- ronnyy [~quassel@p4FF1C73E.dip.t-dialin.net] has joined #go-nuts
14:51 < pn_> in interface implementation do the names of the func-arguments
matter.?if I have somefunc(a string, b bool) in the interface definition and
somefunc(blah1 string, ugh bool) in the implementation
14:51 -!- thiago__ [~thiago@189.26.196.166.dynamic.adsl.gvt.net.br] has quit
[Quit: bye]
14:52 -!- xuser [~xuser@unaffiliated/xuser] has left #go-nuts []
14:53 < exch> nope, you can even omit the names from the interface
definition
14:53 < exch> as long as the types match
14:53 < pn_> thx perfect
14:56 -!- Tv [~tv@cpe-76-168-227-45.socal.res.rr.com] has quit [Ping timeout: 245
seconds]
14:59 -!- cthom [~cthom@32.164.89.238] has joined #go-nuts
15:00 < wrtp> anyone see my post about possible netchan development in
golang-dev and have any comment?
15:02 < wrtp> (i thought it was quite a neat idea, but it's probably obvious
and been discounted for any number of possible reasons...)
15:07 -!- iant [~iant@67.218.105.113] has quit [Quit: Leaving.]
15:08 -!- napsy_ [~luka@88.200.96.18] has joined #go-nuts
15:09 -!- plainhao [~plainhao@mail.xbiotica.com] has joined #go-nuts
15:13 < yiyus> wrtp: there was some talk about using netchan with pipes and
i think everybody liked the idea and afaiu your patch would allow it, so in
principle i like it
15:15 < wrtp> yiyus: i think my patch would actually be pretty much
orthogonal to allowing netchan to work with pipes (something which i'd like too,
BTW)
15:15 < yiyus> anyway, i have not really used netchan, so i cannot say too
much
15:16 < wrtp> np
15:16 < wrtp> thanks for your input anyway
15:17 -!- kanru [~kanru@118-168-234-222.dynamic.hinet.net] has quit [Ping timeout:
252 seconds]
15:18 -!- iant [~iant@nat/google/x-pwlmfhiehhctkyqx] has joined #go-nuts
15:18 -!- mode/#go-nuts [+v iant] by ChanServ
15:25 -!- Guest96532 [~luka@88.200.96.18] has quit [Quit: leaving]
15:25 -!- napsy_ [~luka@88.200.96.18] has joined #go-nuts
15:28 < wrtp> ah, seems like rob has everything in hand.
15:41 -!- synth [~cb@obfuscated.us] has joined #go-nuts
15:42 -!- nsf [~nsf@jiss.convex.ru] has joined #go-nuts
15:51 -!- matti_ [~mumboww@c-98-207-108-218.hsd1.ca.comcast.net] has quit [Quit:
matti_]
15:53 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has joined #go-nuts
16:07 -!- matti_ [~mumboww@c-98-207-108-218.hsd1.ca.comcast.net] has joined
#go-nuts
16:14 -!- Fish [~Fish@9fans.fr] has joined #go-nuts
16:18 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has quit [Ping timeout: 252 seconds]
16:18 -!- ExtraSpice [~XtraSpice@78-57-137-162.static.zebra.lt] has joined
#go-nuts
16:18 -!- awidegreen [~quassel@62.176.237.78] has joined #go-nuts
16:19 -!- jefferai [quassel@kde/amarok/mitchell] has left #go-nuts
["http://quassel-irc.org - Chat comfortably.  Anywhere."]
16:21 -!- werdan7 [~w7@freenode/staff/wikimedia.werdan7] has joined #go-nuts
16:21 -!- dj2_ [~dj2@216.16.242.254] has joined #go-nuts
16:24 -!- dj2 [~dj2@216.16.242.254] has quit [Ping timeout: 240 seconds]
16:25 -!- artefon [~thiagon@150.164.2.20] has joined #go-nuts
16:29 -!- Tv [~tv@gige.bur.digisynd.com] has joined #go-nuts
16:30 -!- Venom_X [~pjacobs@66.54.185.131] has joined #go-nuts
16:30 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has joined #go-nuts
16:33 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit:
Leaving]
16:34 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has joined #go-nuts
16:35 -!- fabled [~fabled@mail.fi.jw.org] has quit [Quit: Ex-Chat]
16:39 < nsf> uhm..  Russ once said:
16:40 < nsf> The packages I found that were using both godefs and
16:40 < nsf> cgo I was able to change to use just cgo; you shouldn't
16:40 < nsf> need godefs too.
16:40 < nsf> how one can replace godefs usage with cgo?
16:40 < nsf> my case is that I have an enum in a C file and I want to
reflect it in the Go
16:40 < nsf> I thought godefs is a perfect tool for that
16:41 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
16:42 < nsf> or he meant the struct case only
16:44 -!- synth [~cb@obfuscated.us] has left #go-nuts []
16:46 -!- ronnyy [~quassel@p4FF1C73E.dip.t-dialin.net] has quit [Remote host
closed the connection]
16:49 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has joined #go-nuts
16:49 -!- virtualsue [~chatzilla@nat/cisco/x-ydliebbldtjvyuwa] has quit [Ping
timeout: 272 seconds]
16:50 -!- ronnyy [~quassel@p4FF1C73E.dip.t-dialin.net] has joined #go-nuts
16:53 -!- wrtp [~rog@92.17.85.103] has quit [Quit: wrtp]
16:55 -!- stalled [~stalled@unaffiliated/stalled] has quit [Ping timeout: 265
seconds]
16:58 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has quit [Quit:
Leaving.]
16:58 -!- Project_2501 [~Marvin@82.84.94.184] has joined #go-nuts
16:58 -!- b00m_chef [~watr@66.183.100.197] has joined #go-nuts
16:59 -!- wrtp [~rog@92.17.85.103] has joined #go-nuts
17:01 -!- MaksimBurnin [~max@44.188-224-87.telenet.ru] has joined #go-nuts
17:04 -!- sahid [~sahid@LNeuilly-152-21-22-10.w193-253.abo.wanadoo.fr] has quit
[Quit: Ex-Chat]
17:05 -!- wjlroe [~will@212.169.34.114] has quit [Quit: Computer has gone to
sleep]
17:07 -!- pn_ [~pn@HSI-KBW-078-042-071-073.hsi3.kabel-badenwuerttemberg.de] has
quit [Remote host closed the connection]
17:07 -!- napsy [~luka@88.200.96.18] has quit [Ping timeout: 260 seconds]
17:09 -!- napsy [~luka@88.200.96.18] has joined #go-nuts
17:10 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts
17:12 -!- rutkowski [~adrian@078088207115.walbrzych.vectranet.pl] has joined
#go-nuts
17:13 -!- ucasano [~ucasano@host153-182-static.227-95-b.business.telecomitalia.it]
has joined #go-nuts
17:20 -!- amacleod [~amacleod@pool-96-252-93-11.bstnma.fios.verizon.net] has
joined #go-nuts
17:22 -!- skelterjohn [~jasmuth@tvwna-ip-b-154.princeton.org] has joined #go-nuts
17:28 -!- cthom [~cthom@32.164.89.238] has quit [Ping timeout: 264 seconds]
17:30 -!- raylu [raylu@c-24-131-193-106.hsd1.pa.comcast.net] has joined #go-nuts
17:31 -!- skelterjohn [~jasmuth@tvwna-ip-b-154.princeton.org] has quit [Quit:
skelterjohn]
17:40 -!- virtualsue [~chatzilla@nat/cisco/x-igeruqabronxksnj] has joined #go-nuts
17:41 < raylu> connection.go:116: to pass 'a' as ...interface { }, use
'a...'
17:42 < raylu> putting 'a...' as an argument doesn't seem to work.  is there
something i'm missing?
17:42 < raylu> the actual line is from goirc:
17:42 < raylu> func (conn *Conn) error(s string, a...  interface{}) {
conn.Err <- os.NewError(fmt.Sprintf(s, a)) }
17:43 <+iant> a...  as the last argument should work, assuming you are using
the latest release
17:43 -!- ronnyy [~quassel@p4FF1C73E.dip.t-dialin.net] has quit [Remote host
closed the connection]
17:43 <+iant> and assuming a is []interface{}
17:43 < raylu> using 'a...' as the last argument gives me the same error and
additionally,
17:43 < raylu> connection.go:116: final argument in variadic function
missing type
17:44 <+iant> a...  would be in the call expression, not in the func
definition
17:44 <+iant> that is, you want fmt.Sprintf(s, a....)
17:44 <+iant> probably
17:44 < raylu> oh.
17:45 -!- kkress [~kkress@64.62.173.125] has quit [Quit: leaving]
17:45 < raylu> ah ha.  that's what you get for putting everything on one
line, i guess
17:45 -!- kkress [~kkress@c-65-49-35-49.tilenetworks.com] has joined #go-nuts
17:45 -!- kkress [~kkress@c-65-49-35-49.tilenetworks.com] has quit [Client Quit]
17:45 -!- kkress [~kkress@c-65-49-35-49.tilenetworks.com] has joined #go-nuts
17:47 -!- amacleod [~amacleod@pool-96-252-93-11.bstnma.fios.verizon.net] has quit
[Quit: Bye Bye]
17:53 -!- ville- [~ville@a107.ath.cx] has quit [Remote host closed the connection]
17:53 -!- ucasano [~ucasano@host153-182-static.227-95-b.business.telecomitalia.it]
has quit [Quit: ucasano]
18:02 -!- atsampson [~ats@94-194-126-16.zone8.bethere.co.uk] has quit [Ping
timeout: 265 seconds]
18:02 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Quit: Leaving]
18:03 * nsf is working on LLVM bindings, 325 of 1200 lines of Core.h is done :P
18:03 < nsf> writing bindings is so boring :)
18:03 < nsf> thank god vim has macros
18:04 < photron> nsf: you could write a bindings generator or add go support
to existing ones :)
18:04 < photron> +instead
18:04 * exch points at swig
18:05 -!- atsampson [~ats@94-194-126-16.zone8.bethere.co.uk] has joined #go-nuts
18:06 < nsf> automatic generators are a subject of constant failure
18:06 <+iant> but easier to keep up to date once they are working
18:06 < nsf> true
18:06 < nsf> but LLVM's C++ api is huge
18:06 < nsf> I'm writing bindings for C api
18:06 < nsf> other languages do the same
18:06 < nsf> e.g.  ocaml
18:07 <+iant> I'm not really suggesting that you do anything different
18:07 < nsf> also I'm fixing their names inconsistency
18:07 < nsf> like LLVMDisposeContext vs.  LLVMModuleDispose
18:07 < nsf> :P
18:07 < nsf> anyway
18:08 * nsf is back to work
18:11 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
18:12 -!- napsy [~luka@88.200.96.18] has quit [Ping timeout: 264 seconds]
18:13 < uriel> adg: the spam in golang-dev is annoying, seems that almost
one per day gets through, and every time I report it, gmail suggest me to
unsibscribe from the group...
18:14 <+iant> I report the spam in the groups interface every time I see it
18:14 <+iant> a lot more spam does get blocked
18:14 < uriel> I report it in the gmail interface, doesn't seem to make any
difference
18:14 <+iant> my hope is that reporting it via the groups interface will
stop from getting into the group in the first place
18:14 < uriel> of course a lot more spam gets blocked, but too much gets
trhough still
18:16 * uriel gave up all hope of the groups spam filtering ever working properly,
same with search, which still is considerably more broken than either google.com
or gmails mailbox search
18:17 < plexdev> http://is.gd/g0BKe by [Rob Pike] in go/src/pkg/log/ -- log:
fix out-of-date package comment
18:35 -!- unRuhe [~pn@HSI-KBW-095-208-088-177.hsi5.kabel-badenwuerttemberg.de] has
joined #go-nuts
18:36 < unRuhe> is there something like a void pointer in go.  I want to
design an interface with a method that might return different types
18:36 -!- enherit [~enherit@cpe-98-149-170-48.socal.res.rr.com] has joined
#go-nuts
18:37 < Tv> unRuhe: interface{}
18:37 < unRuhe> :D
18:37 < unRuhe> okay empty interface
18:37 < unRuhe> ty very much
18:39 -!- gabriel9 [~gabriel9@93.157.192.28] has quit [Read error: Connection
reset by peer]
18:42 -!- gabriel9 [~gabriel9@93.157.192.28] has joined #go-nuts
18:44 -!- skelterjohn [~jasmuth@tvwna-ip-b-154.princeton.org] has joined #go-nuts
18:50 -!- skelterjohn [~jasmuth@tvwna-ip-b-154.princeton.org] has quit [Quit:
skelterjohn]
18:51 -!- qIIp [~qIIp@134.29.57.68] has joined #go-nuts
19:03 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has quit [Remote host closed the connection]
19:03 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
19:05 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
240 seconds]
19:06 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
19:07 -!- ct529 [~quassel@77-44-78-159.xdsl.murphx.net] has joined #go-nuts
19:07 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has quit [Client Quit]
19:08 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
19:12 < unRuhe> is this valid [10]interface{}
19:12 < unRuhe> ?
19:13 < exch> yes
19:14 < unRuhe> then my mistake is somewhere else
19:16 < wrtp> unRuhe: what's the error?
19:17 < unRuhe> just a sec
19:17 -!- peterdn [~peterdn@dhcp-110-228.new.ox.ac.uk] has quit [Quit: ChatZilla
0.9.86-rdmsoft [XULRunner 1.9.2/20100222071121]]
19:17 < unRuhe> http://pastebin.com/8SDh9URi
19:18 < exch> data []interface{} is a slice, [10]interface{} is an array
19:19 < exch> either use make([]interface{}, 10), or ([10]interface{})[0:10]
to get a slice of the array
19:19 -!- zozoR [~zozoR@4705ds1-ris.0.fullrate.dk] has quit [Quit: Morten.  Desu~]
19:19 < exch> A slice is basically a pointer to an underlying fixed size
array.  You can't treat one as the other like you are trying to do
19:20 < plexdev> http://is.gd/g0FVD by [Russ Cox] in 4 subdirs of
go/src/cmd/ -- 5l, 6l, 8l: indent, outdent
19:20 < unRuhe> okay thank u
19:22 < unRuhe> i read about slices but didnt quite get it because
programmers-english is real hard for me :)
19:22 < exch> In Go you will rarely use fixed arrays.  It pays to learn
about slices, cos they are used everywhere and very convenient
19:23 < unRuhe> did i get it right that i can change the size of the
underlying array during runtime?
19:24 -!- skelterjohn [~jasmuth@c-71-230-156-50.hsd1.nj.comcast.net] has joined
#go-nuts
19:25 < hallas> back
19:25 < exch> You can't.  You have to create a new, larger array and copy
it's contents.  However a slice can be defined with both a length and maximum
capacity.  As long as the length of the slice does not exceed the capacity, yuo
can make it larger without creating a whole new slice
19:26 < unRuhe> cool, I think thats what the tutorial page said too but now
i get it :D
19:26 < exch> v := make([]int, 0, 10); <-that slice has length 0, but can
'grow' to 10 elements by doing 'v = v[0:len(v)+1]'.  Once len(v) is larger or
equal to the capacity (10), you have to recreate it
19:27 < nsf> but looks like there will be a new built-in function 'append'
19:27 < nsf> which will do the growth thing for you
19:27 < exch> at some point
19:28 < unRuhe> nsf, but that development is in progress?
19:28 < nsf> I don't know
19:28 < nsf> there was a proposal on the ML
19:28 < nsf> seems people like it
19:28 < unRuhe> i'd like it
19:28 * nsf too
19:30 < unRuhe> did I get it right that once go can use c and c++ libs we'll
be able to do gui work with like gtk+ and Qt?
19:30 < exch> It already can
19:30 < nsf> there is a gtk bindings somewhere
19:30 < nsf> called go-gtk
19:30 < unRuhe> cool thats nice
19:30 < exch> http://go-lang.cat-v.org/library-bindings <- here's a bunch
of C/C++ bindings
19:30 < nsf> http://github.com/mattn/go-gtk
19:30 -!- plainhao [~plainhao@mail.xbiotica.com] has quit [Quit: plainhao]
19:31 < unRuhe> this is a very cool irc channel
19:31 * unRuhe likes
19:31 < mpl> unRuhe: it's missing quite a lot of things but it's already
pretty good for simple apps
19:31 < nsf> I'm working on LLVM bindings right now :)
19:31 < nsf> just finished Types section, starting Values section
19:31 < nsf> ugh..
19:32 < skelterjohn> sounds un-fun
19:32 * nsf sighs
19:32 < nsf> it's not fun
19:32 < wrtp> if you want to convert stuff to use append before it's
implemented, just use this implementation for each type that you need:
http://pastebin.com/3WcLWCAC
19:32 < nsf> skelterjohn: basically it's just a lot of that kind of
functions:
19:32 < nsf> func VoidTypeInContext(c Context) (t Type) { t.c =
C.LLVMVoidTypeInContext(c.c); return }
19:33 < nsf> :D
19:33 < wrtp> i think it's equivalent to the proposed new built-in append
function
19:33 < uriel> unRuhe: you missed the kid that joined, asked for help fixing
something in his code, demanded help right away because he was in a big hurry, and
left, all in the space of one minute, without anyone else saying anything
19:33 < skelterjohn> you'd think someone would write a tool to automate
19:33 < rutkowski> Was there any news about new garbage collector maybe?
19:33 < uriel> unRuhe: now that was cool!
19:33 < nsf> skelterjohn: well, you can't really automate that a lot
19:33 < nsf> because there are many small cases
19:33 < nsf> for type conversions, etc.
19:33 < nsf> sometimes naming sucks
19:34 -!- aho [~nya@fuld-4d00d388.pool.mediaWays.net] has joined #go-nuts
19:34 -!- Eridius [~kevin@unaffiliated/eridius] has joined #go-nuts
19:34 < nsf> like LLVM C API uses GetParamTypes, I use simply ParamTypes as
Go style suggests
19:35 < nsf> also english issues
19:35 < nsf> LLVM C API: IsPackedStruct
19:35 < nsf> me: IsStructPacked
19:35 < taruti> nsf: you have a llvm Go binding?
19:35 < unRuhe> wrtp, TY
19:35 < nsf> taruti: I'm writing them right now
19:35 < taruti> any link?
19:35 < nsf> not yet
19:36 < nsf> Basically I will make a port of Core.h and then I will test it
19:36 < nsf> I though about asking help, but it's a job for one
19:36 < nsf> anyway, end of break, back to work :P
19:37 -!- skelterjohn [~jasmuth@c-71-230-156-50.hsd1.nj.comcast.net] has quit
[Quit: skelterjohn]
19:37 -!- illya77 [~illya77@89-100-133-95.pool.ukrtel.net] has joined #go-nuts
19:44 -!- b00m_chef [~watr@66.183.100.197] has quit [Ping timeout: 255 seconds]
19:44 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has quit [Ping timeout: 252 seconds]
19:45 -!- unRuhe [~pn@HSI-KBW-095-208-088-177.hsi5.kabel-badenwuerttemberg.de] has
quit [Remote host closed the connection]
19:45 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 265
seconds]
19:47 -!- niemeyer [~niemeyer@201-40-152-123.pltce701.dsl.brasiltelecom.net.br]
has joined #go-nuts
19:50 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
19:51 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
264 seconds]
19:51 -!- Hopsy [~Hopsy@77.62.238.136] has joined #go-nuts
19:52 < plexdev> http://is.gd/g0Iv3 by [Russ Cox] in 7 subdirs of go/src/ --
5l, 6l, 8l: first pass cleanup
19:54 -!- illya77 [~illya77@89-100-133-95.pool.ukrtel.net] has quit [Quit:
illya77]
19:58 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
19:58 -!- rutkowski [~adrian@078088207115.walbrzych.vectranet.pl] has quit [Quit:
WeeChat 0.3.3-dev]
20:05 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has joined #go-nuts
20:06 -!- ct529 [~quassel@77-44-78-159.xdsl.murphx.net] has quit [Remote host
closed the connection]
20:07 < nsf> is there any way to take an address of Go's string?
20:07 < nsf> LLVM uses StringRef class a lot, and basically it's a ptr +
length
20:07 < nsf> the same representation as Go uses
20:07 < nsf> s/any/a/
20:08 < nsf> &s[0] doesn't work
20:09 < niemeyer> nsf: uintptr(unsafe.Pointer(&s)), IIRC
20:09 < nsf> &s works, thanks
20:10 < nsf> well, wait
20:10 < nsf> it has type *string
20:10 < KirkMcDonald> That gives a pointer.  I don't think it is a pointer
to the actual character buffer.
20:10 < hallas> its a string pointer
20:10 < nsf> ok, let's hack it
20:10 < hallas> what do you need to achieve?
20:11 < nsf> Go's string is a 'struct { char *ptr; int len; }'
20:11 < nsf> if we're taking an address of that struct
20:11 < KirkMcDonald> nsf: So &s will be in effect a pointer to a pointer.
20:11 < nsf> the address matches 'ptr'
20:11 < hallas> nope, dont think so
20:11 < hallas> try &s.ptr ?
20:11 < nsf> ah, yes
20:11 < nsf> pointer to a pointer
20:12 < KirkMcDonald> nsf: Is that the actual layout of a Go string, though?
20:12 < nsf> well, currently yes
20:12 < KirkMcDonald> Okay.
20:12 < nsf> it's in runtime.h
20:12 < hallas> its simply a pointer to the place where the string is, and
the amount of bytes from that point on that is actually part of the string
20:12 < nsf> hallas: please stop explaining
20:13 < nsf> you're wasting your energy :)
20:13 < hallas> :-(
20:13 < KirkMcDonald> I always liked the reason why D's dynamic arrays
(which include strings) were laid out like struct { size_t length; void *ptr; }
20:13 < nsf> KirkMcDonald: what's the reason?
20:13 < nsf> efficient allocation?
20:14 < nsf> like struct + string at the same time
20:14 < KirkMcDonald> nsf: It's so you could pass them to printf!  Hehe.
20:14 < KirkMcDonald> printf("%*s", d_string)
20:14 < nsf> ah, I see
20:14 <+iant> !
20:14 < nsf> quite interesting
20:14 < KirkMcDonald> It's not guaranteed to work on all architectures.
20:14 <+iant> yeah, %* takes int, not size_t
20:15 < nsf> another hack
20:15 < KirkMcDonald> iant: Also the layout of calling with a struct into a
variadic vs.  two arguments is not guaranteed to be the same.
20:15 < niemeyer> nsf: (*reflect.StringHeader)(unsafe.Pointer(&s)).Data
gives you the address to the data
20:15 -!- mduft_ [~mduft@gentoo/developer/mduft] has joined #go-nuts
20:15 < KirkMcDonald> I believe it breaks on Solaris, for instance.
20:15 -!- mduft [~mduft@gentoo/developer/mduft] has quit [Read error: Connection
reset by peer]
20:15 < nsf> niemeyer: thanks
20:15 < nsf> but I think I will avoid hacks
20:15 < nsf> just use C.CString
20:15 < nsf> who cares about one alloc anyway :)
20:17 < KirkMcDonald> But it's mostly moot now, since D has its own writef
function.
20:19 -!- mduft__ [~mduft@193.186.16.254] has joined #go-nuts
20:19 -!- mduft_ [~mduft@gentoo/developer/mduft] has quit [Read error: Connection
reset by peer]
20:24 < plexdev> http://is.gd/g0Knl by [Russ Cox] in 14 subdirs of
go/src/cmd/ -- various: avoid %ld etc
20:24 < plexdev> http://is.gd/g0Knq by [Ken Thompson] in 3 subdirs of
go/src/ -- fix arm bug in reflect.call
20:28 < niemeyer> nsf: I guess I'm significantly more tolerant than that :)
20:29 < nsf> who cares about ten mallocs?  :)
20:29 < nsf> or I misunderstood you
20:29 < niemeyer> nsf: No, the other way around..  the above line doesn't
look too hackish to me at all
20:29 < nsf> ah, I see
20:29 < nsf> well, maybe it isn't
20:30 < niemeyer> nsf: It's just unsafe, but as long as "s" stays around for
the duration of whatever is being done with its data, should be cool
20:30 < nsf> but I don't want to add 'reflect' package dependency yet
20:30 < niemeyer> Ah, I see..  that's cool
20:30 < niemeyer> nsf: Regarding tolerance, wait until you see the mmap I've
been hacking in my spare time ;-)
20:30 < nsf> although I've added a TODO item, which says that I should
consider using 'reflect' for LLVM bindings
20:30 < nsf> because it may help there
20:31 < nsf> niemeyer: hehe
20:33 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 276
seconds]
20:34 < KirkMcDonald> That's the thing about immutable strings.
20:34 < KirkMcDonald> They're only immutable as long as they're still alive.
20:35 -!- araujo [~araujo@gentoo/developer/araujo] has joined #go-nuts
20:35 -!- artefon [~thiagon@150.164.2.20] has quit [Quit: Leaving]
20:35 -!- virtualsue [~chatzilla@nat/cisco/x-igeruqabronxksnj] has quit [Ping
timeout: 252 seconds]
20:35 < niemeyer> KirkMcDonald: Hahaha
20:35 < KirkMcDonald> So once I wrote the Python bindings for D.
20:36 < KirkMcDonald> Originally I had it so that Python strings were
exposed to D as just a D slice over the internal buffer of the Python string.
20:36 < niemeyer> KirkMcDonald: You should create a patent on strings which
are allocated on immutable memory
20:36 < KirkMcDonald> This worked reasonably well, until I discovered that,
once the Python string was collected, that memory may be reused for other objects.
20:37 < niemeyer> Once allocated, they stay unchanged forever
20:38 < nsf> LLVMBool DontNullTerminate
20:38 < nsf> llvm c api rocks
20:39 < nsf> it's done that way because the common way of handling string is
null termination
20:39 -!- pothos_ [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:39 < nsf> and ',0)' looks better than ',1)'
20:39 < nsf> :D
20:39 < nsf> C++ API has 'bool AddNull' instead
20:39 -!- pothos_ [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read
error: Connection reset by peer]
20:40 < nsf> I guess I will turn in back in Go
20:40 -!- pothos_ [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:40 < nsf> :\
20:41 -!- pothos_ [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read
error: Connection reset by peer]
20:41 -!- pothos_ [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:42 < nsf> s/in/it/
20:42 -!- pothos_ [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read
error: Connection reset by peer]
20:42 < nsf> :\
20:42 -!- pothos_ [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:42 < niemeyer> Null termination must be one of the worst ideas in the
life of computing
20:42 -!- pothos [~pothos@111-240-217-33.dynamic.hinet.net] has quit [Ping
timeout: 265 seconds]
20:42 < nsf> agreed
20:42 < niemeyer> I'm sure there must be a good historical reason for it,
but I've never heard it
20:43 -!- pothos_ [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read
error: Connection reset by peer]
20:43 <+iant> it lets you represent the length of a string in a single byte
20:43 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:43 <+iant> so it is a good choice if you are very memory constrained
20:43 < niemeyer> iant: Well, only if most of the strings are empty, which
feels pretty weird
20:43 < anticw> it's also pretty easy to work with in various common C loops
20:43 < nsf> "At the time C (and the languages that it was derived from)
were developed, memory was extremely limited, so using only one byte of overhead
to store the length of a string was attractive."
20:43 < exch> if a string has no fixed size, you can't know if the length
can fit in 1, 2, or 4, etc bytes..
20:44 < nsf> (c) wiki
20:44 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:44 <+iant> no, I mean you have to represent the length of a string
somehow
20:44 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:44 <+iant> a null byte gives you the length in one byte
20:44 < niemeyer> Well..  what about using *that same byte* to represent the
length?
20:44 <+iant> it's just that you have to walk through the string to get
there
20:44 < exch> Just because there is more memory now, is no reason to use
more bytes, if less works just as well :p
20:44 <+iant> that would limit you to strings up to 255 byte slong
20:44 <+iant> which is insufficient
20:44 < nsf> niemeyer: but that limits you to 255 characters
20:44 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:45 < niemeyer> Of course..  var-ints et al
20:45 <+iant> yeah, people have done that too, but now you're getting
complicated
20:45 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:45 < niemeyer> iant: Well..  that's a pretty light talk for a decision
which would be around for several decades :-)
20:45 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:45 < niemeyer> I'm sure there was further consideration, so I still
ponder about what the debate at the time looked like.
20:46 <+iant> ask ken, I guess
20:46 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:46 <+iant> pascal used a length word followed by the string
20:46 <+iant> C used null termination
20:46 < niemeyer> iant: Yeah, I surely would like to hear the story, when I
get a chance to talk to him
20:46 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:46 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:47 < aho> http://en.wikipedia.org/wiki/C_string#History
20:47 < aho> derp :f
20:47 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:47 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:47 < niemeyer> aho: Yeah, was pasted above too
20:47 < KirkMcDonald> Null termination may represent the length in a single
byte, but it also prohibits a certain value from appearing within the string.
20:48 < aho> ah
20:48 <+iant> Dennis Ritchie or somebody had a list of things he did not
like about Pascal
20:48 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:48 < niemeyer> KirkMcDonald: Yeah, I guess that's the whole point, isn't
it :)
20:48 <+iant> I can't find it now, though
20:48 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:48 < KirkMcDonald> Pascal used 1-indexed arrays, didn't it?
20:48 < anticw> http://www.lysator.liu.se/c/bwk-on-pascal.html
20:49 <+iant> ah, Kernighan
20:49 <+iant> thanks
20:49 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:49 < anticw> that one is seared into my brain saldy
20:49 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:49 < anticw> iant: look at 2.1 :-)
20:50 < aho> http://www.joelonsoftware.com/articles/fog0000000319.html - Why
do C strings work this way?  It's because the PDP-7 microprocessor, on which UNIX
and the C programming language were invented, had an ASCIZ string type.  ASCIZ
meant "ASCII with a Z (zero) at the end."
20:50 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:50 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:50 < niemeyer> aho: Interesting, thanks
20:51 < niemeyer> That's forwarding the question, though :-)
20:51 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:51 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:51 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:52 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:52 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:53 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:53 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:53 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:54 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:54 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:55 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:55 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:56 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has quit [Read error:
Connection reset by peer]
20:56 -!- pothos [~pothos@111-240-212-186.dynamic.hinet.net] has joined #go-nuts
20:58 -!- MaksimBurnin [~max@44.188-224-87.telenet.ru] has quit [Quit: Leaving.]
20:58 -!- dj2_ [~dj2@216.16.242.254] has quit [Remote host closed the connection]
20:59 < pingveno> Is there any way to parse command line flags based on an
arbitrary array?
20:59 < pingveno> That's as opposed to the array that's passed in to main
20:59 -!- jcao219 [~jcao219@pool-173-74-61-111.dllstx.fios.verizon.net] has joined
#go-nuts
20:59 < anticw> yes
20:59 < anticw> if i understand you
20:59 < anticw> you 'regsiter' things then call flag.Parse()
21:00 < anticw> the idiom where you hvae var fFoo = flag.Type(...)
21:00 < wrtp> pingveno: you can assign to os.Args
21:00 < anticw> doesn't have to be done like that, you can do this
dynamically before the .Parse()
21:00 < wrtp> but otherwise, i think you're out of luck
21:00 < wrtp> copy the code
21:00 < pingveno> anticw: flag.Parse doesn't take an arbitrary arrag
21:01 < pingveno> I'm reluctant to assign to os.Args because there will be
multiple main-like functions that will be running.
21:01 < anticw> pingveno: can you give a concrete example of what you wnat?
21:02 < anticw> calling flag.Type(...) is like a registration, you can do
that dynamically in whatever form you like
21:03 < wrtp> anticw: if you wanted to do some arg-like parsing on a
sub-compoment of a program, rather than at the top level, how would you do it?
21:03 < pingveno> Pipelining where each component has a name and flags that
are only aimed toward it.
21:03 < pingveno> Like OS pipes, but without context switching.
21:03 < anticw> wrtp: at the level you grok you know what args you want,
call flag.Type(...) if htat's what you want
21:04 < wrtp> anticw: no, because arg.Parse only parses args from os.Args,
not some arbitrary args that i might wish to parse also
21:04 < wrtp> pingveno: it's a good thing to do, but you'll have to
rewrite/mutate the arg package.  it's not hard.
21:04 -!- rlab [~Miranda@91.200.158.34] has quit [Quit: Miranda IM! Smaller,
Faster, Easier.  http://miranda-im.org]
21:05 < anticw> wrtp: ah, i see what you mean ...  it seems you can change
os.Args at that stage though
21:05 < wrtp> anticw: yeah, but you run the risk of interfering with other
pieces of program.  and you have to put a lock around it to be thread safe
21:05 * pingveno thinks there will probably be third-party packages some time.
21:06 < wrtp> pingveno: it's really a very easy problem to solve
21:06 < wrtp> arg parsing is easy
21:06 < anticw> wrtp: is flag parsing really done all over the place where
you have to worry about that?
21:06 -!- wjlroe [~will@78-86-14-131.zone2.bethere.co.uk] has joined #go-nuts
21:07 < wrtp> anticw: i don't understand the question
21:07 < anticw> wrt to being thread safe, i think it's common (but not
exclusively the case) to parse flags in or near main() or some called variant
21:07 < anticw> not all over the place at any time
21:08 < wrtp> it depends on your code
21:08 < pingveno> That sounds like it risks difficult to hunt down bugs.
21:09 < wrtp> if you've got a little program that's putting pipelines
together in parallel, then it's quite possible that each command in the pipeline
might parse its arguments in parallel too
21:11 < pingveno> Oy
21:11 < pingveno> Class time
21:11 -!- stalled [~stalled@unaffiliated/stalled] has quit [Ping timeout: 265
seconds]
21:11 < pingveno> Thanks guys.  I'll see what I can do.
21:11 < wrtp> have fun
21:11 -!- qIIp [~qIIp@134.29.57.68] has quit [Quit: leaving]
21:11 < pingveno> I will...  I hope
21:21 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts
21:27 -!- mduft_ [~mduft@gentoo/developer/mduft] has joined #go-nuts
21:27 -!- mduft__ [~mduft@193.186.16.254] has quit [Read error: Connection reset
by peer]
21:29 -!- hallas [~hallas@x1-6-30-46-9a-b2-c5-1f.k891.webspeed.dk] has left
#go-nuts []
21:35 -!- ikaros [~ikaros@dslb-188-097-076-206.pools.arcor-ip.net] has quit [Quit:
Leave the magic to Houdini]
21:37 -!- dahankzter [~henrik@92-244-3-192.customers.ownit.se] has quit [Quit:
Leaving.]
21:40 -!- ShadowIce [~pyoro@unaffiliated/shadowice-x841044] has quit [Quit:
Verlassend]
21:42 -!- Hopsy [~Hopsy@77.62.238.136] has left #go-nuts
["Bothallchoractorschumminaroundgansumuminarumdrumstrumtruminahumptadumpwaultopoofoolooderamaunsturnup"]
21:47 -!- Fish [~Fish@9fans.fr] has quit [Remote host closed the connection]
21:48 -!- Project_2501 [~Marvin@82.84.94.184] has quit [Quit: E se abbasso questa
leva che succ...]
21:52 -!- wjlroe [~will@78-86-14-131.zone2.bethere.co.uk] has quit [Quit: Computer
has gone to sleep]
21:58 -!- ExtraSpice [~XtraSpice@78-57-137-162.static.zebra.lt] has quit [Ping
timeout: 240 seconds]
22:15 -!- skelterjohn [~jasmuth@c-76-124-135-199.hsd1.nj.comcast.net] has joined
#go-nuts
22:16 -!- mbohun [~mbohun@ppp115-156.static.internode.on.net] has quit [Quit:
Leaving]
22:22 -!- awidegreen [~quassel@62.176.237.78] has quit [Read error: Connection
reset by peer]
22:27 < plexdev> http://is.gd/g0SlE by [Russ Cox] in go/src/pkg/ -- arm:
enable 8 more packages
22:36 -!- wrtp [~rog@92.17.85.103] has quit [Quit: wrtp]
22:47 * nsf sighs
22:47 < nsf> Values section is finished
22:48 < nsf> two big sections to go
22:48 < nsf> llvm.go is already more than 1000 lines of code
22:48 < nsf> :P
22:54 -!- kanru [~kanru@118-168-234-222.dynamic.hinet.net] has joined #go-nuts
23:02 -!- stalled [~stalled@unaffiliated/stalled] has quit [Ping timeout: 265
seconds]
23:05 -!- tgall_foo [~tgall@gentoo/developer/dr-who] has quit [Ping timeout: 250
seconds]
23:06 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has quit [Ping timeout:
265 seconds]
23:09 -!- rbraley [~rbraley@ip72-222-128-78.ph.ph.cox.net] has joined #go-nuts
23:17 -!- stalled [~stalled@unaffiliated/stalled] has joined #go-nuts
23:18 -!- photron [~photron@port-92-201-126-85.dynamic.qsc.de] has quit [Ping
timeout: 250 seconds]
23:22 -!- iant [~iant@nat/google/x-pwlmfhiehhctkyqx] has quit [Quit: Leaving.]
23:26 -!- Venom_X [~pjacobs@66.54.185.131] has quit [Quit: Venom_X]
23:31 -!- araujo [~araujo@gentoo/developer/araujo] has quit [Ping timeout: 276
seconds]
23:32 -!- jmettraux [~jmettraux@211.19.55.177] has joined #go-nuts
23:32 -!- iant [~iant@67.218.105.113] has joined #go-nuts
23:32 -!- mode/#go-nuts [+v iant] by ChanServ
23:42 -!- tgall_foo [~tgall@gentoo/developer/dr-who] has joined #go-nuts
23:46 < yiyus> i have updated my brainfuck interpreted and moved it to
bitbucket, who should i contact to change the link in the dashboard?
23:46 <@adg> yiyus: adg@golang.org
23:46 < yiyus> k
23:46 <@adg> yiyus: you know, there's a bf interpreter in the go distro:
test/turing.go
23:46 -!- dj2 [~dj2@CPE001f5b35feb4-CM0014048e0344.cpe.net.cable.rogers.com] has
joined #go-nuts
23:47 < yiyus> i know, i based mine in it
23:47 < yiyus> but mine also reads input, test/turing.go doesn't
23:47 <@adg> ah :)
23:47 <@adg> I say that because I had a friend implement a BF interpreter in
Go, and he didn't realise there already was one; his was a lot longer than
turing.go :P
23:48 < yiyus> it was my first go "project", improving turing.go
23:48 <@adg> cool!
23:49 < yiyus> but i have changed the interface, now it accepts the program
as a string and you pass to it an io.Reader and an io.Writer for io
23:50 < yiyus> i wonder if there should be an Interpreter interface in some
package
23:50 < yiyus> (not yet, but is something that i guess could appear in the
future)
23:51 -!- hoisie [~hoisie@c-67-188-239-219.hsd1.ca.comcast.net] has joined
#go-nuts
23:52 < raylu> so i have a rbot.conf.example file that i want the makefile
to copy to rbot.conf.  i have the build rule for rbot.conf set up, but i don't
know how to add it to "all"
23:55 < yiyus> raylu: all: rbot.conf
23:55 < raylu> doesn't the Make.inc or Make.cmd define it already, though?
23:56 < yiyus> it will just be added to the all rule, it does not overwrite
it
23:57 < raylu> oh hey...  what do you know.  thanks
--- Log closed Thu Oct 14 00:00:10 2010