0
J'apprends F #. J'ai écrit la fonction de pli personnalisé pour la liste (avec l'aide ici sur StackOverflow). J'essaye maintenant d'écrire la fonction de foldback dites myOwnFoldBack. La sortie attendue pourrait être myOwnFoldBack (+) 0 [1; 2; 3 ]
devrait renvoyer 6
.F # Ecriture d'une fonction de repli personnalisée pour la liste
Voici mon code pour
myOwnFoldlet rec myOwnFoldf s0 =
function
| [] -> s0
| x::tail -> myOwnFoldf (f s0 x) tail
Cela fonctionne très bien. est ici code pour myOwnFoldBack
let rec myOwnFoldBack f s0 =
function
| [] -> 0
| x::tail -> x f (myOwnFoldBackf tail)
L'erreur que je reçois est:
Type mismatch. Expecting a
'a
but given a
('b -> 'a -> int) list -> int
The resulting type would be infinite when unifying ''a' and '('b -> 'a -> int) list -> int'
semble que vous avez une petite faute de frappe, deuxième 'myOwnFoldBack' est' myOwnFoldBackf' –
je pense à part cela, il y a des problèmes plus. –
Il semble y avoir un peu plus. 'myOwnFoldBackf' renvoie 0 isntead de' s0' en cas de liste vide, et dans l'autre cas vous appliquez 'x' à' f' et vous ne passez pas 's0' à l'appel récursif ... –