Esistono lingue diverse da Haskell per implementare stringhe come elenchi di caratteri collegati?

1

Il tipo String di Haskell è un alias per [Char] (cioè un elenco collegato di Char s). Qualunque altra lingua usa un'implementazione di stringhe come questa?

    
posta dpk 19.06.2016 - 23:08
fonte

2 risposte

6

Sì. Erlang fa lo stesso, così come molti altri linguaggi di programmazione funzionale.

L'utilizzo di stringhe come elenco di caratteri rende molto semplici la corrispondenza e la motivazione del modello. Tuttavia, le loro prestazioni sono relativamente negative:

  • l'accesso all'ennesimo carattere in una stringa passa prima di tutti gli elementi n-1. Questo è quindi lineare nel tempo.
  • accodare le stringhe è lento per lo stesso motivo (è necessario scorrere tutti i caratteri della prima stringa)
  • in un elenco collegato, è necessario memorizzare sia un carattere che un puntatore al carattere successivo. Ciò richiede molta più memoria (per ogni personaggio, è necessario sia il personaggio stesso che un puntatore alla successiva posizione di memoria, che in molti sistemi richiede in realtà più spazio del personaggio stesso).

Inoltre, Unicode, in cui un grafema potrebbe consistere di più caratteri, li ha resi ancora meno pratici, in quanto ciò rende di nuovo molto imprevedibile il pattern matching sui personaggi.

Spesso, questi linguaggi hanno anche altri modi per gestire stringhe più veloci, ma più difficili da manipolare. Ad esempio, Haskell ha il tipo Testo e Erlang ha i binari che possono essere trattati come stringhe.

    
risposta data 20.06.2016 - 08:29
fonte
2

La sintassi "abc" in Prolog è in genere una notazione abbreviata per un elenco di codici carattere, ovvero [97,98,99] , che è anche il caso in Erlang . Vedi questa domanda per i dettagli. Quando un'implementazione Prolog supporta un tipo di stringa personalizzato (ad es. ECLiPSe / SWI / YAP ), ci sono dei predicati da convertire da e verso elenchi di codici carattere.

    
risposta data 20.06.2016 - 08:22
fonte

Leggi altre domande sui tag