package main
import "time"
func main() {
// FIXME: This is not thread-safe. Then again, that just makes it
// interesting.
// All opinions strengthen over time, given no facts.
go func() {
time.Sleep(24 * 60 * 60 * 1000000000) // 1 day
for _, op := range opinions {
op.strengthen(stuckInMyWaysDelta) // presumably >0 but small
// NOTE: stuckInMyWaysDelta keeps getting increased each time we
// release. This is becoming a problem.
}
}()
// Accept incoming facts, adjust opinions accordingly. Congruent facts
// strengthen opinions, incongruent facts weaken opinions.
go func() {
for f := range factChan {
for _, op := range opinions {
agree, value := op.arbitrateFact(f)
if !agree {
value = -value
}
relevancy := op.factRelevancy(f) // >= 0.0
op.strengthen(value * relevancy)
}
}
}()
// Contrariness loop:
// Disabled if pleasant or uninteresting.
if !pleasant || interesting {
go func() {
// For each incoming opinion (from another program), reconcile with
// existing, local opinions. Unlike facts, opinions are strengthened
// because of disagreement, not agreement.
for inOp := range opinionChan {
for _, op := range opinions {
agree, value := op.arbitrate(inOp)
if agree {
value = -value
}
value *= howMuchICareCoefficient // see social.go
relevancy := op.relevancy(inOp) // >= 0.0
op.strengthen(value * relevancy)
}
}
}()
}
go inspireNewOpinions()
go garbageCollectStaleOpinions()
metabolize() // doesn't return until SIGTERM
}
Thursday, December 8, 2011
opinions.go
Subscribe to:
Post Comments (Atom)
2 comments:
rejecting of facts or opinions due to failure to comply with current paradigm.
please include this upgrade in opinion.go.2
Anonymous— Good catch! Too bad JEC doesn't have a bug-tracking system.
Post a Comment