powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Haskell: вопросы
25 сообщений из 123, страница 3 из 5
Haskell: вопросы
    #39643954
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonпочему output не сработал?
скопировал твой код. у меня всё работает.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643955
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNmaytonпочему output не сработал?
скопировал твой код. у меня всё работает.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643957
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNmaytonА можно как-то поскипать эти монадические теории? Мне ведь просто нужно упорядочить
несколько вызовов функций.
ну так пока тебе и не надо знать сих теорий.
Слава богу. Я думаю Жук что я докумекаю до них. Но я смотрю на Хаскелл с прищуром. Тоесть с вопросом
- "Что ты мне можешь дать" ? Мне нравится истинный полиморфизм. Я имею в виду способность функций
принимать (редуцировать) произвольный набор аргументов а также лениво их вычислять и вычислять бесконечные
последовательности.

Это прияно. Это новая степень свободы которая недоступна другим ЯП. Но конечно-же я не хочу
как Дон-Кихот воевать с мельницами. Я потрачу на I/O некоторое число человеко-часов. Дальше
я просто отложу его. Есть другие дела. Не менее интересные.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643958
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

main автоматически запускается, если скомпилить исходник в исполняемый файл и его запустить.

загружая же исходник в ghci, main нужно явно запускать.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643959
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Окей. А вы тоже в консоли сидите как я? Или есть среды?
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643960
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ потрачу на I/O некоторое число человеко-часов.
там нет на что тратить время.
сами мондаы(не только ио) штука интересная.
вот здесь неплохо раскрыта:
https://rsdn.org/article/funcprog/monad.xml

но что-бы работать с вводом-воводом в хаскеле(на начальных этапах), теорию о монадах знать не обязательно.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643961
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОкей. А вы тоже в консоли сидите как я? Или есть среды?
может и есть. я в нотепад++ пишу. компилю с консоли.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643968
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скомпилил. Он как то странно себя ведет.

Код: sql
1.
2.
3.
C:\Users\mayton\Documents\Haskell>tut02.exe
eee
Enter you name : Hello eee


Сначала я получаю контекст ввода. А потом отрабатывает первая функция печати промпта. И третья с выводм приведа.

Чорт меня возьми! Чорт возьми этого Хаскела вместе с Чорчем!!
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643969
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСкомпилил. Он как то странно себя ведет.

Код: sql
1.
2.
3.
C:\Users\mayton\Documents\Haskell>tut02.exe
eee
Enter you name : Hello eee



Сначала я получаю контекст ввода. А потом отрабатывает первая функция печати промпта. И третья с выводм приведа.

Чорт меня возьми! Чорт возьми этого Хаскела вместе с Чорчем!!
Код: sql
1.
2.
3.
4.
main = do
 putStrLn "Enter you name : "
 name <- getLine
 putStr ( "Hello " ++ name ) 
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643970
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все точно так док.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643972
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВсе точно так док.
что так, ты разницу заметил?
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643973
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
putStrLn? И как он влияет на порядок аргументов?
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643975
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonputStrLn? И как он влияет на порядок аргументов?
тут не в аргументах, видимо, а в буфере вывода.
буфер по строкам, наверное, выводит.
путСтрЛн - даеёт окончание строки, вот ты и видишь в консоле вывод сразу.
а путСтр, только в фбуфер загоняет символы, и ты их видишь, только уже когда сам перевел строку в консоле.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39643976
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... ну теперь ввод работает в верном порядке. Но курсор прыгает не вовремя.
Код: sql
1.
2.
3.
Enter you name :
sss
Hello sss
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644013
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ссылки которые нашел. Пригодятся в топике. Пишу для себя.

Learning Haskell http://learn.hfm.io/

School of Haskell https://www.schoolofhaskell.com/

GHC User Guide https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/

Books https://wiki.haskell.org/Books

Очень специфический формат документации не позволяет мне пока искать API для себя.
Например. Как конвертить Double в String. Я догадываюсь что это должна быть функция
вида Double -> String. Но дайте мне чорт возьми классификатор или дорожную карту по API.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644014
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
import System.IO
import Text.Printf

tostring :: Vector -> String
tostring (x, y, z) = 
 "(" ++ x ++ "," ++ y ++ "," ++ z ")"

v1 = (3.0, 4.0, 5.0)

main = do
  putStrLn ( "v1=" ++ (tostring v1) )



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
.....
card.hs:43:33: error:
    * Couldn't match expected type `[Char] -> [Char]'
                  with actual type `Double'
    * The function `z' is applied to one argument,
      but its type `Double' has none
      In the second argument of `(++)', namely `z ")"'
      In the second argument of `(++)', namely `"," ++ z ")"'
   |
43 |  "(" ++ x ++ "," ++ y ++ "," ++ z ")"
   |                                 ^^^^^
Failed, no modules loaded.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644017
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОчень специфический формат документации не позволяет мне пока искать API для себя.
Например. Как конвертить Double в String. Я догадываюсь что это должна быть функция
вида Double -> String. Но дайте мне чорт возьми классификатор или дорожную карту по API.
функция show
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644018
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNmaytonОчень специфический формат документации не позволяет мне пока искать API для себя.
Например. Как конвертить Double в String. Я догадываюсь что это должна быть функция
вида Double -> String. Но дайте мне чорт возьми классификатор или дорожную карту по API.
функция show
тип должен реализовывать typeclass Show(это что-то вроде интерфейса из ооп, с той лишь разницей, что связывание раннее, а не познее).
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644020
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
import System.IO
import Text.Printf

tostring :: Vector -> String
tostring (x, y, z) = 
 "(" ++ x ++ "," ++ y ++ "," ++ z ")"

v1 = (3.0, 4.0, 5.0)

main = do
  putStrLn ( "v1=" ++ (tostring v1) )




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
.....
card.hs:43:33: error:
    * Couldn't match expected type `[Char] -> [Char]'
                  with actual type `Double'
    * The function `z' is applied to one argument,
      but its type `Double' has none
      In the second argument of `(++)', namely `z ")"'
      In the second argument of `(++)', namely `"," ++ z ")"'
   |
43 |  "(" ++ x ++ "," ++ y ++ "," ++ z ")"
   |                                 ^^^^^
Failed, no modules loaded.



можно было бы написать так:
Код: sql
1.
2.
3.
tostring :: Vector -> String
tostring (x, y, z) = 
 "(" ++ (show x) ++ "," ++ (show y) ++ "," ++ (show z) ++ ")"



но это не тру вей.
во первых, для вектора и так уже реализована функция show.
во вторых, если для твоего типа не реализована, ты должен указать что твой тип является инстансом класса Show и реализовать для него функцию show. кстати, для алгебраических типов, её можно реализовывать автоматически, вот я выше тебе приводил тип, для которого автоматически реализуются типы шоу и иквалс:

ZyK_BotaNZyK_BotaNа можно и через алгебраический тип данных
что-то типа такого:
Код: sql
1.
2.
data Vector = Vector Int Int Int
   deriving (Show, Eq)
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644021
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNво первых, для вектора и так уже реализована функция show.
т.е. можно написать:
Код: sql
1.
2.
main = do
  putStrLn ( "v1=" ++ (show v1) )
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644023
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNно это не тру вей.
во первых, для вектора и так уже реализована функция show.
во вторых, если для твоего типа не реализована, ты должен указать что твой тип является инстансом класса Show и реализовать для него функцию show. кстати, для алгебраических типов, её можно реализовывать автоматически, вот я выше тебе приводил тип, для которого автоматически реализуются типы шоу и иквалс:

Как она реализована? Мне нужны круглые скобочки. Это будет важно для тестирования.

В стандартной документации я тону. Спасибо за show/eq. Если ты будешь кидать пруфы
где есть фирменная дока + пример использования - буду признателен. Многие вещи
непривычны. Я торможу не потому что не знаю как это сделать. А скорее слишком много
знания и слишком много вариантов как это сделать тормозят меня. А я в силу своего
перфекционизма не могу выбрать true way. Собсно для этого я и поднял топик.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644024
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забегу вперед.

Фрагмент С++-ной функции которая имеет очень непригодный для ФП вид. Ее надо портировать в Haskell.

Код: sql
1.
2.
3.
int tracer(Vector o, Vector d, double &t, Vector& n) {
   .....
}


Параметры t и вектор n - это out-параметры. Фактически их надо вернуть через return.

Есть мысль просто перенести их как результат функции кортеж.

Код: sql
1.
tracer :: Vector ->  Vector -> (Int, Double, Vector)
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644025
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКак она реализована? Мне нужны круглые скобочки. Это будет важно для тестирования.
как обычная функция.
можно и со скобочками и без. в зависимости от контекста.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644026
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЕсть мысль просто перенести их как результат функции кортеж.
вполне логичное решение.
...
Рейтинг: 0 / 0
Haskell: вопросы
    #39644038
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал определить новый тип с Show. Это треш какой-то. Как понять код ошибки?
Неужели я должен обойти over 9000 синтаксических форм чтоб выбрать одну единственно
правильную?

Код: sql
1.
newtype Vector = Double Double Double deriving (Show,Eq)


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Prelude> :l card.hs
[1 of 1] Compiling Main             ( card.hs, interpreted )

card.hs:27:18: error:
    * The constructor of a newtype must have exactly one field
        but `Double' has two
    * In the definition of data constructor `Double'
      In the newtype declaration for `Vector'
   |
27 | newtype Vector = Double Double Double deriving (Show,Eq)
   |                  ^^^^^^^^^^^^^^^^^^^^
...
Рейтинг: 0 / 0
25 сообщений из 123, страница 3 из 5
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Haskell: вопросы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]