What you want is Money, currency is a _unit_ type of a Money quantity, just as meter is a unit type of Length.
Money cost = 25M USD;
cost += 12M EUR;
display(cost.to(EUR));
Money cost = 25M USD;
cost += 12M EUR;
display(cost.to(EUR));
> just as meter is a unit type of Length
The difference is that length units are fixed, but exchange rates are constantly changing.
Right. As I mentioned earlier exchange rate services would need to be integrated into the API.
Also, exchange rate services would not be needed until a conversion is necessary. For instance, when adding money of different currencies internally the Money type maintains currencies separately, subtotals for USD, EUR, etc. are managed. If at a later time the sum of Money should be displayed, deposited, etc. as a single currency, only then is an exchange service involved.