Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [Sicstus Prolog] Problema con parametro di output

    Salve,
    ho un problema con il seguente codice

    codice:
    create_semantic_graph(SemanticGraph):-
    	see('semantic_graph.bk'),
    	EdgesList = [],
    	read(A),
    	create_edges_list(A, EdgesList),
    	nl,nl,write(EdgesList),
    	seen
    .
    
    create_edges_list(end_of_file, _) :- !.
    
    create_edges_list(A, EL):-
    	read(A1),
            write([A|EL],nl,
    	create_edges_list(A1,[A|EL])
    .
    In pratica vorrei leggere delle linee dal file semantic_graph.bk e inserirle in una lista.
    Il problema è nella variabile EdgesList: quando faccio il write(Edgeslist) in create_semantic_graph , mi stampa una lista vuota.

    Durante il procedimento, la lista è costruita bene, e lo vedo tramite il write([A|EL]) all'interno di create_edges_list

    E' come se la funzione create_edges_list non riesca a mandare in output EL.
    E' la prima volta che scrivo in Prolog, quindi non ci capisco granchè.
    Il compilatore è Sicstus Prolog.

    Dove sbaglio?
    Grazie.

  2. #2
    Prendendo spunto da un pezzo di codice funzionante che ho a disposizione, ho modificato il codice come segue

    codice:
    create_semantic_graph(SemanticGraph):-
    	see('semantic_graph.bk'),
    	EdgesList = [],
    	read(A),
    	create_edges_list(A, EdgesList),
    	write(EdgesList),
    	seen
    .
    
    create_edges_list(A, E):- create_edges_list(A, [], E).
    
    create_edges_list(end_of_file, EdgesList, EdgesList).
    
    create_edges_list(A, E, EdgesList):-
    	read(A1),
    	(A1 \= end_of_file ->
    		create_edges_list(A1, [A|E], EdgesList)
    	;
    		create_edges_list(end_of_file, [A|E], EdgeList)
    	)
    .
    Ma niente...non riesco ancora a ritornare quel valore che mi serve in create_semantic_graph.

  3. #3
    Lol...ho risolto...l'ultimo codice postato è esatto, tranne un piccolo particolare: ho sbagliato il nome della variabile nell'ultima riga di codice. ^^

    Ho saltato la lettera S nel terzo parametro.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.