Comment puis-je obtenir un sous-réseau à Haskell? P>
3 Réponses :
Je n'ai trouvé aucun moyen direct d'obtenir une sous-tableau (c'est-à-dire une tranche de suivi), mais voici une façon de le faire via une liste intermédiaire.
import Data.Array subArray :: Int -> Int -> Array -> Array subArray i j a = listArray (0,j-i) $ map (a!) [i..j]
Je pense que vous recherchez est la section « dérivées de livres em> 'dans la documentation Data.Array: http://hackage.hakell.org/Arcackages/archive/array/latest/doc/html/data-array.html# 5
qui abrite la fonction: ixmap permet des transformations sur les indices de tableau. On peut penser que la fourniture de la composition de fonction à droite avec le mappage que le tableau d'origine incarne. P>
Une transformation similaire de valeurs de matrice peut être obtenue à l'aide de FMAP à partir de l'instance de tableau> de la classe de fonctions. P>
blockQuote> Le code suivant: p> retournerait un tableau avec limites Exemple fort> Si vous aviez le tableau "Hello World" (HelloworLLDARRAY ci-dessous) et que vous voulez seulement voir "ell" comme un em> dérivé em> basé em> (sous-) Array: P>
novices code>, et lorsqu'il est indexé avec i code>, la fonction de transformation index em> est appliquée sur l'index i code> avant d'être utilisé pour indexer Backingarray code>. P>
> let helloWorldArray = listArray (0,length str - 1) str -- 0-based array
where str = "Hello World"
> let ellArray = ixmap (0,2) succ helloWorldArray -- also 0-based array
> ellArray ! 0
'e'
> ellArray ! 1
'l'
> ellArray ! 2
'l'
Prendre des sous-tableaux à l'aide du Vecteur Package est probablement l'approche la plus facile (en supposant que votre question ne soit pas 't en fait de demander des sous-listes). P>
Les fonctions pertinentes de l'interface Vector / Array General sont les suivantes: P>
:: vecteur VA => int -> int -> VA -> VA CODE> LI>
ul>
Mais vous devriez aussi savoir de prendre et de tomber. Slice prend un index et une longueur et extrait la sous-tableau. P>
Savez-vous comment obtenir un tableau en premier lieu? De quelle bibliothèque de tableau parle-t-on? Data.vector? Data.Array? Cette question a vraiment besoin de tailler.
@TOMMD SUBARRAY DE DONNÉES.Array
Data.Array est plutôt maladroite et n'a pas de fusion, je vous suggère de regarder des données.
newarray_ (0, x) :: io (ioarray int sous) code> :-pN'oubliez pas d'accepter la réponse qui vous a aidé à la fin;)