
Hot
19.09.2017
19:51:48
import System.IO
import Text.Read
import Data.Complex
data Solution a =
OneSolution a
| TwoRealSolutions a a
| TwoComplexSolutions a a
deriving (Show)
prompt :: (Read a) => String -> IO a
prompt text = do
putStr text
hFlush stdout
line <- getLine
case readMaybe line of
Just x -> return x
Nothing -> putStrLn "Invalid number entered" >> prompt text
solveEquation :: (RealFloat a, Floating a, Ord a) => a -> a -> a -> Solution (Complex a)
solveEquation a b c
| a == 0.0 = OneSolution alone
| d < 0.0 = TwoComplexSolutions x1 x2
| d == 0.0 = OneSolution x1
| d > 0.0 = TwoRealSolutions x1 x2
where d = b*b - 4*a*c
x1 = f (+) :+ 0
x2 = f (-) :+ 0
f operator = -b `operator` sqrt d / (2*a)
alone = ((-c) :+ 0) / realToFrac b
main :: IO ()
main = do
a <- prompt "Input a: "
b <- prompt "Input b: "
c <- prompt "Input c: "
print $ solveEquation a b c

Vasiliy
19.09.2017
19:51:51
я к тому, что сравнивать флоаты так нельзя

Hot
19.09.2017
19:52:14
Оу, сорян, хз, зачем сюда спастил.
Ну я хз, как сделать.

Google

Hot
19.09.2017
19:52:38
Там сначала 0 был

Alexander
19.09.2017
19:52:50
@hotkosc это цитата из кода

Hot
19.09.2017
19:52:51
Но потом мне кто-то сказал, что с 0.0 более правильно, так как там Floating.

Alexander
19.09.2017
19:53:08
флоаты конечно нельзя сравнивать так

Artem
19.09.2017
19:53:22
в числах с плавающей точкой есть погрешность

Alexander
19.09.2017
19:53:25
впрочем там при b == 0 все равно проблема

Hot
19.09.2017
19:53:34
Так

Alexander
19.09.2017
19:53:39
http://hackage.haskell.org/package/ieee754-0.8.0/docs/Data-AEq.html
~== то, что интересует
@hotkosc кстати поменяй Solution тип
data Solution a = One a
| TwoReal a a
| TwoComplex (Complex a) (Complex a)
с другой стороны это не достаточно обще ?
т.к. почему запрещено агрументы комлексные иметь

Google

Alexander
19.09.2017
19:58:32
но пофиг
ещё можно добавить NoSolution для случай solve 0 0 1
ну или какое исключение

Hot
19.09.2017
20:08:14
Это да
Ладно, я на сегодня наверное свернусь, всем большое спасибо.
Завтра попробую допилить.
Блин, насколько это проще всё может быть: https://rosettacode.org/wiki/Roots_of_a_quadratic_function#Haskell
Вообще дичь

Pavel
19.09.2017
20:12:11

Hot
19.09.2017
20:13:30
Всмысле, оно ещё проще?

Pavel
19.09.2017
20:14:21
Всмысле, оно ещё проще?
не совсем
точнее совсем нет
не существует общего аналитического способа решить уравнение
P(x) = 0, где P(x) некий полином от x

Hot
19.09.2017
20:16:35
А, всё, понял.

Alexander
19.09.2017
20:19:26
ну тот вариант падает при a == 0

Pavel
19.09.2017
20:20:00

Alexander
19.09.2017
20:20:04
b=+-d (это возможно?)
да
другое дело, что это нормально отдавать на откуп вызывающему

? animufag ?
19.09.2017
22:18:23

Alexander
19.09.2017
22:21:24
вот кстати жалко что алгоритмы разные принципиально
хотя у го весьма дурное

Google

Alexander
19.09.2017
22:57:38
я сегодня ещё не ругался на mtl?

Quet
19.09.2017
23:29:29
все плохо?

Yuriy
20.09.2017
06:04:49

Alexander
20.09.2017
06:22:20
я даже не знаю как сформулировать, но в комбинации с MonadBaseControl в случае ошибок типов, ghc выдает нерелеватную фигню
по которой понять ошибку невозможно
кстати понять что было не так я так и не смог, в итоге переписал по другому
аналогичный код работает в другом месте, такое ощущение что ghc чудит

Hot
20.09.2017
07:08:01
Давайте, пишите сюда какие-нибудь сниппеты на хачкеле, я буду читать и попытаюсь вникнуть и разобраться.
А то что-то никого экшона.

Dmitry
20.09.2017
07:10:17
rosetta code

kir
20.09.2017
07:26:07
@hotkosc
fix f = x
where
x = f x

戲劇顧問
20.09.2017
07:28:44
pascal = iterate $ \row -> zipWith (+) ([0] ++ row) (row ++ [0])

Denis
20.09.2017
07:29:31
и?

戲劇顧問
20.09.2017
07:29:57
Ваш экшон

Denis
20.09.2017
07:31:25
у меня такой))
pascal' :: Int -> [[Int]]
pascal' n
| n <= 0 = []
| otherwise = ana psi [1] where
psi = \case
(length -> x) | x == (n + 1) -> Nil
x -> Cons x (zipWith (+) ([0] <> x) (x <> [0]))

Alexander
20.09.2017
07:49:32
@hotkosc hackage://base

Hot
20.09.2017
07:49:50
И то верно.
Но с розеттой мне совет больше понравился.

Alexander
20.09.2017
07:54:25
можно project euler-овские смотреть ещё задачи
там есть решения первой сотни, пытаться самому решить и посмотреть код потом

Google

illiatshurotshka❄️
20.09.2017
07:58:54
а есть пример использования метаморфизма?

Denis
20.09.2017
08:01:44
метаморфизм это дуализм к хиломорфизму

Светочка
20.09.2017
08:04:45
☣️ВНИМАНИЕ ЕСТЬ РАБОЧЕЕ ПРЕДЛОЖЕНИЕ☣️
☣️? РАБОТА В БЛИЖНЕМ ЗАРУБЕЖЬЕ ?☣️
- ВОДИТЕЛЯ ( ? 500 у.е. рейс - месяц ? 4000 у.е. )
- РАБОТНИК СКЛАДА ( от ? 600 у.е до ? 850 у.е неделя )
ОФОРМЛЕНИЕ НА РАБОТУ В ГОРОДЕ КИЕВЕ.
ДОХОД ? НЕ ФИКСИРОВАН , ЗАВИСИТ ТОЛЬКО ОТ ??
ВЫРАБОТКИ , ПРОВОДИТСЯ СТАЖИРОВКА И ОБУЧЕНИЕ ЗА НАШ
СЧЕТ.
ЖИТЕЛЕЙ ДРУГИХ ГОРОДОВ И СТРАН ПРЕДЛАГАЕМ РАБОТУ И
ПРОЖИВАНИЕ.
БЕЗ ВЛОЖЕНИЙ!
ТРЕБОВАНИЯ К РАБОТНИКУ:
- ПОЛНЫХ 18 ЛЕТ. ?
- АДЕКВАТНОСТЬ. ⚠️✅
- ПРАВА МИНИМУМ КАТЕГОРИИ "В" ?.
- УМЕНИЕ ПОЛЬЗОВАТЬСЯ СМАРТФОНОМ (НЕ КАТЕГОРИЧНО).
?
- ЦЕЛЕУСТРЕМЛЕННОСТЬ ↗️.
ОФОРМЛЕНИЕ НА РАБОТУ
- ПО ДОКУМЕНТАМ ? + АНКЕТКА?.
ПИСАТЬ МЕНЕДЖЕРУ В ЛИЧКУ - ☎️ https://t.me/WH1000 ⚖️

Kirill
20.09.2017
08:05:33
Киньте бан, а

ParkeT
20.09.2017
08:05:51
Лол. Господа хаскелисты, никто не хочет дальнобоем поработать? ?

Dmitry
20.09.2017
08:06:18
я хотел бы пилотом гражданской авиации. но когда я это понял, я уже слишком старый был
до 30-ти лет были бы шансы
нескольких людей знаю, которые из IT пошли в пилоты.

ParkeT
20.09.2017
08:06:40
А в чём проблема то?

Dmitry
20.09.2017
08:07:12
старый, пока обучусь, пока здоровье приведу в порядок - операции на глазах и т.п. есть мнение, что это все не окупится до момента выхода на пенсию
т.е праваки много не зарабатывают, а до КВС-а уже не успею

ParkeT
20.09.2017
08:07:27
Упирается в деньги всё. 10к$ и будет у тебя лицензия.

Dmitry
20.09.2017
08:07:29
а вот мой знакомый так стал КВС-ом

ParkeT
20.09.2017
08:07:56
А, здоровье. Ясно.

Dmitry
20.09.2017
08:10:15
ну это не фатальная проблема - просто глаза починить, все так и делают

Alexander
20.09.2017
08:15:44
это не кто-то из ушедших из IT-шников недавно разбился?

Dmitry
20.09.2017
08:16:56
ну этого я не знал

Anton
20.09.2017
08:17:18
А есть какая-то статистика по смертности среди пилотов гр. авиации? Это в среднем опасная профессия или нет? (сорри за оффтоп)

Dmitry
20.09.2017
08:17:23
нет
статистику не знаю, но профессия не особо опасная

Google

Yurii
20.09.2017
08:18:11

Dmitry
20.09.2017
08:18:36
https://understandinguncertainty.org/node/243

illiatshurotshka❄️
20.09.2017
08:19:01

Dmitry
20.09.2017
08:19:13
@ukunsun ну мы про профессию говорим

Alexander
20.09.2017
08:19:15
имелось ввиду, что структура dual?

Denis
20.09.2017
08:19:37
да, дуальная конструкция
как наример ката-ана, пара-апо

Dmitry
20.09.2017
08:19:54
@ukunsun пилот-любитель это хобби, мне скайдайва хватает за глаза, авиация - дороже

illiatshurotshka❄️
20.09.2017
08:23:00

Denis
20.09.2017
08:23:11

illiatshurotshka❄️
20.09.2017
08:23:22
аа
а как это в хаскеле выражается?

Denis
20.09.2017
08:25:46
произведение и копроизведение

Yurii
20.09.2017
08:30:06
@ukunsun ну мы про профессию говорим
Дообучиться проще с любителя.
Прошу простить за рекламу, но ЧелАвиа обучают (в том числе и до уровня профессии), и рекомендуют сначала любителя, а потом решать.

illiatshurotshka❄️
20.09.2017
08:31:50