"Smart-contract" itself is a very misleading term: in SCL (smart-contract language) research, it means any kind of automation of legal contracts and agreements between multiple parties, so, most papers that I've found concentrate only on this aspect.
I had Cardano in mind with Haskell
One of the seminal work in this area is, in fact, a Haskell parser combinator library (a DSL, basically) from Peyton-Jones, who IIRC worked on GHCi compiler and later established a fintech company that used this DSL. Most of home-brewed / academic SCL implementations are inspired by this work, like e.g. Findel or Simplicity. Findel's author also maintains a curated list of SCL resources, which you should check out.
>> probe system/locale/currencies/list [ AED AFN ALL AMD ANG AOA ARS AUD AWG AZN BAM BBD BDT BTC BGN BHD BIF BMD BND BOB BRL BSD BTN BWP BYN BZD CAD CDF CHF CKD CLP CNY COP CRC CUC CUP CVE CZK DJF DKK DOP DZD EGP ERN ETB ETH EUR FJD FKP FOK GBP GEL GGP GHS GIP GMD GNF GTQ GYD HKD HNL HRK HTG HUF IDR ILS IMP INR IQD IRR ISK JEP JMD JOD JPY KES KGS KHR KID KMF KPW KRW KWD KYD KZT LAK LBP LKR LRD LSL LYD MAD MDL MGA MKD MMK MNT MOP MRU MUR MVR MWK MXN MYR MZN NAD NGN NIO NOK NPR NZD OMR PAB PEN PGK PHP PKR PLN PND PRB PYG QAR RED RON RSD RUB RWF SAR SBD SCR SDG SEK SGD SHP SLL SLS SOS SRD SSP STN SYP SZL THB TJS TMT TND TOP TRY TTD TVD TWD TZS UAH UGX USD UYU UZS VES VND VUV WST CFA XAF XCD XOF CFP XPF YER ZAR ZMW ]
>> m: XYZ$30 *** Syntax Error: (line 1) invalid money at XYZ$30 >> append system/locale/currencies/list 'XYZ >> m: XYZ$42 == XYZ$42.00