In C, reading the data in a string and putting its data into a struct is fairly straight forward, you just use something along the lines of sscanf to parse your data:
struct ingredient_dose ingr;
char *current_amount = "5 tsp sugar";
sscanf(current_amount, "%d %s %s", &ingr.amount, ingr.unit, ingr.ingredient);
Which would fill the struct/record with the given data.
How would I do something similar in Haskell? I realise you can't mutate anything once it's made, so the procedure will obviously be a bit different from the C example, but I can't seem to find a decent guide that doesn't include parsing JSON.