【发布时间】:2019-10-14 16:38:08
【问题描述】:
试图将 Haskell 函数转换为 Clojure。但面临困难。不知道发生了什么。
这是递归 Haskell 函数。
mapWidth :: [[Char]] -> Int
mapWidth [] = 0
mapWidth (x:xs)
| length xs == 0 = length x
| length x /= length (xs!!0) = -1
| otherwise = mapWidth(xs)
这是我迄今为止尝试过的:
(defn mapWidth [data_list]
(def data 0)
([[x & xs](seq data_list)](if (= (count x) 0)
(data 0)
(data -1))))
([[x & xs](seq data_list)](if not(= (count xs) length (xs!!0))
(data 0)
(data -1)
mapWidth(xs)))
感谢任何帮助。我对这两种语言都很陌生。
【问题讨论】:
-
-1 在这里返回是一个奇怪的值。在 Haskell 中,这个函数不应该是
[[Char]] -> Maybe Int吗?在 Clojure 中,您将返回nil。
标签: haskell clojure code-translation