Ich versuche, in Expert F durch ein Beispiel zu arbeiten #, die auf v1.9.2 basiert, aber die CTP Versionen nach, dass genug geändert, dass einige von ihnen nicht einmal kompilieren Sie mehr.Expert F # Web-Crawler Beispiel
Ich habe Probleme mit Listing 13-13. Hier ist der Ausschnitt aus der urlCollector
Objektdefinition:
let urlCollector =
MailboxProcessor.Start(fun self ->
let rec waitForUrl (visited : Set<string>) =
async { if visited.Count < limit then
let! url = self.Receive()
if not (visited.Contains(url)) then
do! Async.Start
(async { let! links = collectLinks url
for link in links do
do self <-- link })
return! waitForUrl(visited.Add(url)) }
waitForUrl(Set.Empty))
ich mit Version bin Kompilieren 1.9.6.16, und der Compiler beschwert sich so:
- unvollständige strukturierte Konstrukt an oder vor diesem Punkt in ausdruck [nach dem letzten paren]
- Fehler im Rückgabeausdruck für dieses 'let'. Mögliche falsche Einrückung [bezieht sich auf die Definition
waitForUrl
]
Kann jemand hier was schief gehen?
Vereinbarte ... manchmal Definition Block durch Einrücken Unbekannter als hilfreich ist. Ich habe mir angewöhnt, Anfangs-/Ende-Token hinzuzufügen, um auszulösen, wo lange oder tief verschachtelte Blöcke beginnen und enden. Sie werden nicht in der #light-Syntax benötigt, sind aber weiterhin verfügbar. – flatline
Danke - ich werde es versuchen. Ich denke, eine Sache, die irreführend war, und die unglückliche Tatsache, dass die richtige Einrückung wichtig ist, bestand darin, dass das Beispiel im Buch einen Seitenumbruch umfasst. Daher ist es schwierig zu sagen, wo die Einrückung ausgerichtet ist. –
Dies ist wieder gebrochen :( – Benjol