Nano Hash - криптовалюты, майнинг, программирование

ошибка отступа?

Я думаю, что знаю, как использовать идентификацию в Haskell, но у меня есть проблема в этом коде:

module TestTSPGA where 

import TSPGA -- in this we have the type used on the second function
import Data.List

main :: IO () 
main = do 
          contents <- readFile "aaaa.txt" 
          let s = map words (lines contents) 
          let cities = map stringsToCity s 

stringsToCity :: [String] -> City 
stringsToCity [c, x, y] = (read c, (read x, read y)) 

ошибка такая же, как и в n вопросах в StackOverflow, я пытался исправить это n раз, но безуспешно.

Ошибка:

C:\Users\xxx\Desktop\TestTSPGA.hs:11:10: ошибка:

Последний оператор в блоке do должен быть выражением

пусть города = карта stringsToCity s

Я новичок в хаскеле, когда я думаю, что могу чему-то научиться, язык показывает мне новую ошибку.


  • Это не ошибка отступа. Проблема в том, что вы используете монаду IO, но ваша последняя строка не монадическая строка. Хотите что-нибудь напечатать? 11.06.2017

Ответы:


1

Вы не можете закончить блок do с помощью let (или x <- ...): должно быть что-то, что вы хотите сделать с этой переменной, которую вы связываете.

Самое простое решение - ничего не делать:

main = do 
   contents <- readFile "aaaa.txt" 
   let s = map words (lines contents) 
   let cities = map stringsToCity s 
   return ()

Наверняка у вас есть идея получше, как продолжить main. Например. вы могли бы print cities или сделать больше вычислений.

11.06.2017
  • Это очень простой тест, как отладка, мне нужно изучить апликацию функций в этом коде, я понял объяснение выражения do, спасибо! 13.06.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..