Changer la signature d'une fonction en ocaml

Fermé
miroo4 Messages postés 5 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 24 juin 2013 - 24 juin 2013 à 16:29
miroo4 Messages postés 5 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 24 juin 2013 - 24 juin 2013 à 19:42
Bonjour,
supposons que j'ai la fonction suivante:
let split_line line =
let first = line.[0] in
let reste = String.sub (line) 1 ((String.length (line))-1)in
(first, reste) ;;
comment je fais pour l'appeler plusieurs fois, (et changer la signature de la fonction pour qu'elle supporte plusieurs paramètre) car je serais amener à l'utiliser plusieurs fois dans le code : est-ce que la syntaxe d'ocaml me permet de faire
let (first_char, rest_chars) = split_line "the string","th string2" ...!!!!
Merci,
A voir également:

3 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
24 juin 2013 à 19:15
Dans ce cas, il te faut une structure de données, une liste, un tableau, ou type personnalisé, car il n'est pas possible en Caml de définir un nombre indéfini de paramètres, ni de définir plusieurs fois la même fonction avec des types de paramètres différents.

let (first_char, rest_chars) = split_line ["the string","th string2"];;

type line = One of string | Two of string*line;;
let (first_char, rest_chars) = Two ("str1",Two ("str2", (One "str3")));;
1
miroo4 Messages postés 5 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 24 juin 2013
24 juin 2013 à 19:42
Merci, cela m'est très utile :)
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
24 juin 2013 à 18:46
Quel serait le résultat de ta fonction split_line à plusieurs arguments ?

Ne serait-il pas plus simple de faire directement une concaténation ?

let (first_char, rest_chars) = split_line ("the string"^"th string2");;
0
miroo4 Messages postés 5 Date d'inscription lundi 24 juin 2013 Statut Membre Dernière intervention 24 juin 2013
24 juin 2013 à 19:01
non parce que je dois l'utiliser sur des ligne différents et j'aurais des résultats différents à chaque fois, je voulais juste créer cette fonction pour que je n'utilise pas partout dans mon code un truc du genre let X=String.sub (line) 1 ((String.length (line))-1)in
sachant que line change à chaque fois!
0