在haskell中,我收到此錯誤,并且我認為表格是正確的
main = do
archivo <- openFile "09septiembre2019.txt" ReadMode
contenido <- hGetContents archivo
let lineas = lines String archivo
registros = filter filtrarRenglones lineas
matrizHorarios = map words registros
matrizHorariosFiltrada = map (map (filter (`notElem` "\"\""))) matrizHorarios
tuplas = map hacerTuplas matrizHorariosFiltrada
diaFecha = map (unirStrings . take 1) tuplas
horarios = map (tomarTuplas . drop 1) tuplas
horasSumadas = map (map sumarHoras) horarios
horasAcumuladas = map sum horasSumadas
horasNormalizadas = map normalizar horasAcumuladas
stringHoras = map show horasNormalizadas
resultado = zip diaFecha stringHoras
stringRegistrosEmpleados = map mostrarResultado resultado
intCantidadEmpleados = length $ filter buscarCantEmpleados lineas
stringCantidadEmpleados = ["Total de empleados listados: " show intCantidadEmpleados]
floatHorasAcumuladas = fromIntegral (sum horasAcumuladas) / 60
stringHorasAcumuladas = ["\nCantidad de horas acumuladas en el mes: " show floatHorasAcumuladas " hs"]
floatHorasHombre = floatHorasAcumuladas / fromIntegral intCantidadEmpleados
stringHorasHombre = ["\nCantidad de horas/hombre en el mes: " show floatHorasHombre " hs"]
intAvgHorasHombre = floatHorasHombre / 20
stringAvgHorasHombre = ["\nPromedio diario de horas/hombre: " show intAvgHorasHombre " hs"]
informe = stringRegistrosEmpleados stringCantidadEmpleados stringHorasAcumuladas stringHorasHombre stringAvgHorasHombre
putStrLn $ unlines informe
hClose archivo
錯誤是:輸入'='決議錯誤也許您需要在'do'塊中使用'let'?例如 'let x = 5' 而不是 'x = 5'
uj5u.com熱心網友回復:
讓我們用我們可以輕松完全編譯的內容重現您的問題:
main = do
i <- return 2
j <- return 4
let sum = i j
mult = i * j
putStrLn $ "Sum: " (show sum)
putStrLn $ "Multiplication: " (show mult)
如果我嘗試在 ghci 上加載此檔案:
λ> :l 69859274-2.hs
[1 of 1] Compiling Main ( 69859274-2.hs, interpreted )
69859274-2.hs:5:13: error:
parse error on input ‘=’
Perhaps you need a 'let' in a 'do' block?
e.g. 'let x = 5' instead of 'x = 5'
|
5 | mult = i * j
| ^
Failed, no modules loaded.
修復它:
main = do
i <- return 2
j <- return 4
let sum = i j
mult = i * j
putStrLn $ "Sum: " (show sum)
putStrLn $ "Multiplication: " (show mult)
并再次加載:
λ> :l 69859274-2.hs
[1 of 1] Compiling Main ( 69859274-2.hs, interpreted )
Ok, one module loaded.
λ> main
Sum: 6
Multiplication: 8
注意我使用了兩個空格列。您正在使用一個空格列。
使用代碼的刪節版:
main = do
archivo <- openFile "09septiembre2019.txt" ReadMode
contenido <- hGetContents archivo
let lineas = lines String archivo
registros = filter filtrarRenglones lineas
matrizHorarios = map words registros
matrizHorariosFiltrada = map (map (filter (`notElem` "\"\""))) matrizHorarios
tuplas = map hacerTuplas matrizHorariosFiltrada
// all other bindings starting at the same column as this comment...
// ....
putStrLn $ unlines informe
hClose archivo
uj5u.com熱心網友回復:
是的,我將所有行向左移動,我保持這樣:
main = do
archivo <- openFile "09septiembre2019.txt" ReadMode
contenido <- hGetContents archivo
let lineas = lines String archivo
registros = filter filtrarRenglones lineas
matrizHorarios = map words registros
matrizHorariosFiltrada = map (map (filter (`notElem` "\"\""))) matrizHorarios
tuplas = map hacerTuplas matrizHorariosFiltrada
diaFecha = map (unirStrings . take 1) tuplas
horarios = map (tomarTuplas . drop 1) tuplas
horasSumadas = map (map sumarHoras) horarios
horasAcumuladas = map sum horasSumadas
horasNormalizadas = map normalizar horasAcumuladas
stringHoras = map show horasNormalizadas
resultado = zip diaFecha stringHoras
stringRegistrosEmpleados = map mostrarResultado resultado
intCantidadEmpleados = length $ filter buscarCantEmpleados lineas
stringCantidadEmpleados = ["Total de empleados listados: " show intCantidadEmpleados]
floatHorasAcumuladas = fromIntegral (sum horasAcumuladas) / 60
stringHorasAcumuladas = ["\nCantidad de horas acumuladas en el mes: " show floatHorasAcumuladas " hs"]
floatHorasHombre = floatHorasAcumuladas / fromIntegral intCantidadEmpleados
stringHorasHombre = ["\nCantidad de horas/hombre en el mes: " show floatHorasHombre " hs"]
intAvgHorasHombre = floatHorasHombre / 20
stringAvgHorasHombre = ["\nPromedio diario de horas/hombre: " show intAvgHorasHombre " hs"]
informe = stringRegistrosEmpleados stringCantidadEmpleados stringHorasAcumuladas stringHorasHombre stringAvgHorasHombre
putStrLn $ unlines informe
hClose archivo
我也犯了同樣的錯誤
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/350105.html
標籤:哈斯克尔
