我有简单的元组(例如从数据库读取),我不知道元素的数量和内容。例如。 (String, Int, Int)
或(String, Float, String, Int)
。操作“任意”元组
我想写一个通用函数,它将采用各种元组并用字符串“NIL”替换所有数据。如果字符串“NIL”已经存在,它应该保持不变。
说回例如: ("something", 3, 4.788)
应导致("something", "NIL", "NIL")
("something else", "Hello", "NIL", (4,6))
应导致("something else", "NIL", "NIL", "NIL")
我明明不知道从哪里开始,因为它不会与元组做这是一个问题这是已知的。如果没有Template Haskell,可以在这里得到我想要的结果吗?
你想让第一个项目独立,但所有其他项目都是“NIL”? – AndrewC
你确定元组是正确的数据类型吗?有一些方法可以做到这一点,但如果您将数据转化为更好的类型,那么这种方法就不那么笨拙了。另外,你确定你想要第一个元素得到这样的特殊待遇吗? – shachaf
使用像SYB这样的泛型库比Template Haskell更好 - 根据user5402的回答,你应该看看HList。 –