Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Haskell, деревья, списки, строки 
V
    Опции темы
Shaggie
Дата 23.4.2011, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Vokunya, можно создать собственный конвертер интов во флоаты со строгим приведением типа
Код

iToF n = (fromIntegral n) :: Float

тогда my (iToF i) (iToF j) отработает безошибочно.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Vokunya
Дата 12.5.2011, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 7.12.2008
Где: Беларусь

Репутация: 1
Всего: 1



Void, Shaggie, спасибо огромное - заработало.  smile 
Тему пока не закрываю - могут еще возникнуть вопросы.

А вот и вопросы, не заставили себя долго ждать  smile 
Код

7 //n
5 //m
2 //steps

//результат вычислений
6.237543738093008
6.237543738136641
6.237543738142182
8.571997489293574
8.571997489293777
8.571997489293802
11.107291609336576
11.107291609336576


На каждой итерации результат вычислений заносится в res, мы и получили 3 значения, но которые продублировались. Отчего такое поведение?

Это сообщение отредактировал(а) Vokunya - 12.5.2011, 21:04
PM MAIL ICQ   Вверх
Void
Дата 16.5.2011, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Vokunya @  12.5.2011,  22:21 Найти цитируемый пост)
На каждой итерации результат вычислений заносится в res, мы и получили 3 значения, но которые продублировались. Отчего такое поведение?

Почему 3?
m = 7, 8, 9
n = 5, 6, 7
Итого 9 комбинаций.
А значения не дублируются, просто 1/b! << (a!)^3 и изменение n влияет очень слабо.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Vokunya
Дата 17.5.2011, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 7.12.2008
Где: Беларусь

Репутация: 1
Всего: 1



Хм. Просто я ожидал, что логика работы будет следующей:

1-ая итерация : m = 7, n = 5
2-ая итерация : m = 8, n = 6
3-ая итерация : m = 9, n = 7
PM MAIL ICQ   Вверх
Shaggie
Дата 23.5.2011, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(Vokunya @  17.5.2011,  01:12 Найти цитируемый пост)
1-ая итерация : m = 7, n = 5
2-ая итерация : m = 8, n = 6
3-ая итерация : m = 9, n = 7 

Ха, немножко промахнулся. Увидел лесенку форов и соптимизировал в list comprehension. Итог одинаков - декартово произведение множеств.

Ну так это несложно переделать. Что по сути надо? Получить два списка [7,8,9] и [5,6,7] и работать с попарно склеенными элементами [(7,5),(8,6),(9,7)]. Даже более того, можно создать два бесконечных списка чисел и бесконечно их склеивать, никаких проблем. Потенциально бесконечно (Волшебная Супер Сила Хаскеля!)
Создать бесконечный список возрастающих чисел:
Код

-- вариант 1, Prelude
iterate succ n
-- вариант 2, сахар
[n..]

Склеить стандартной (для функциональных языков) функцией zip и, так как список получается бесконечным, ограничиться нужным количеством элементов с помощью функции take.

Итого:
Код

let res = [my i j | (i,j) <- take (steps + 1) $ zip [m..] [n..]]



--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Vokunya
Дата 2.6.2011, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 7.12.2008
Где: Беларусь

Репутация: 1
Всего: 1



Со всем разобрался.
Огромное спасибо за помощь
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума «Функциональные языки: общие вопросы»
Void
  • Пожалуйста, создавайте темы с содержательными названиями. Если у Вас вопрос по конкретному языку, укажите его в заголовке, например: «[Haskell] Как использовать монаду State».
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0455 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.