@haskellru

Страница 1548 из 1551
Abbath
26.10.2018
14:06:16
В нем функция

В нее нужно из JSON передатт параметры

И сравнить с результатом который тоже в JSON

Функция всегда разная

Google
Abbath
26.10.2018
14:07:24
JSON ей соответсвует

Alexander
26.10.2018
14:07:55
какие параметры передать?

Abbath
26.10.2018
14:08:03
Приходит Value, я тяну по ключам arguments и expected

Alexander
26.10.2018
14:08:07
как ты это узнаешь?

Abbath
26.10.2018
14:08:31
Вот и я не знаю

Alexander
26.10.2018
14:08:48
ты хочешь что-то странное

Abbath
26.10.2018
14:08:51
Пока что у меня питоновский код генерит сигнатуры для хаскеля

Alexander
26.10.2018
14:08:54
ты получаешь Object

Artyom
26.10.2018
14:08:56
У меня есть подозрение, что ты можешь туда хотеть передать record с тайп-левел ключами Нет?

Alexander
26.10.2018
14:09:00
это чушь какая-то

зачем?

Abbath
26.10.2018
14:09:19
Ты это мне?

Alexander
26.10.2018
14:09:46
пришёл модуль у него параметры {keys: [Text], solve: :: Object -> Value}

Google
Alexander
26.10.2018
14:09:59
зачем лишние извращения?

Abbath
26.10.2018
14:10:17
Ммм, откуда параметры?

Artyom
26.10.2018
14:10:25
Ладно, что-то сложное и непонятное отваливается

Alexander
26.10.2018
14:10:28
откуда они у тебя физически?

Abbath
26.10.2018
14:10:36
Кто?

параметры?

Alexander
26.10.2018
14:10:49
информация о том, какие параметры доставать

оттуда и бери

Abbath
26.10.2018
14:11:00
{"arguments":[1.0, {"1":2},["wobl","rhtowg","euassbnct","existence","stymes","eskmo"]],"expected":[["existence","existence"]]}

Вот например такой JSON

Вот в arguments Double -> Map Int Text -> [Text] например

В рантайме я соснул конечно

Alexander
26.10.2018
14:12:05
это значит что у тебя data Task = Task { taskArgumetns: [Value] , taskExpected: [Value] }

отдаешь их проверяющему сравниваешь

Abbath
26.10.2018
14:12:39
Но функция имеет тип Double -> Map Int Text -> [Text] -> [Text]

Alexander
26.10.2018
14:13:25
так, давай дальше, модуль который тебе присылают, на каком языке?

он грузится динамически или статически?

Abbath
26.10.2018
14:14:11
Хаскельный

module Solution where import Data.Map solution :: Double -> Map String Int -> [String] -> [[String]] solution n m xs = [xs]

Google
Abbath
26.10.2018
14:14:39
Например

Alexander
26.10.2018
14:17:26
понял

в общем ты можешь сделать класс типов, который будет для функции парсить аргументы как надо

Abbath
26.10.2018
14:17:53
Хмм

Как это говно будет работать?

За мат извени

Может гайд какой есть, пример

Alexander
26.10.2018
14:19:02
можешь поискать генерогенный foldr у олега или fold arguments или как PrintF сделан

в printf в другую стороную, но идея та же

Abbath
26.10.2018
14:19:50
Функция останется простой, магия будет только в моем коде?

Alexander
26.10.2018
14:20:06
максимум нужно будет терминатор сделать

типа solution :: Double -> Map String Int -> [String] -> Result [[String]]

Abbath
26.10.2018
14:21:46
Result это что?

Alexander
26.10.2018
14:22:05
newtype Result a = Result a

Abbath
26.10.2018
14:22:25
Ясно понятнр

Alexander
26.10.2018
14:35:58
{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE ScopedTypeVariables #-} class Foo a where run :: [String] -> a -> String instance {-# OVERLAPPABLE #-} Show a => Foo a where run [] a = show a run _ _ = error "!" instance {-# OVERLAPPING #-} (Read a, Foo b) => Foo (a -> b) where run (s:ss) f = show $ run ss (f (read s)) run _ _ = error "!!" test1, test2 :: String test1 = run ["1","2.3"] $ \(i::Int) (j::Double) -> fromIntegral i + j test2 = run ["[1,2]","2"] $ \(i::[Int]) (j::Int) -> take j i

в json сам переделаешь?

@a66ath ^

Abbath
26.10.2018
14:37:09
А сейчас оно на стрингах?

Alexander
26.10.2018
14:37:19
ты же видишь?

Google
Abbath
26.10.2018
14:37:22
Переделаю

Ну вижу

Alexander
26.10.2018
14:37:28
да, и Read/Show вместо ToJSON и FromJSON

скорее всего только это поменять надо будет и [Value] вместо [String] передавать

итого, у тебя а.: тип структуры сообщения у которого всегда есть parameters и expect или answer что там

делаешь тип: data Task = Task { taskParameters :: [Value] , taskExpected :: Value } deriving Generic deriveAeson параметрыКоторыеОткусываютТаск ''Task

точнее углубляться не надо

по типам функции тестирования генерируется парсер

Alexander
26.10.2018
17:04:15
foldr (\a b -> min <$> a <*> b <|> a <|> b) Nothing — как получше можно такую функцию переписать?

Oleg
26.10.2018
17:05:33
Алмаз дал работы на два чата

Сейчас по всем языкам клич пойдёт

Alexander
26.10.2018
17:06:02
м?

kana
26.10.2018
17:22:34
если бы было бы max, то можно было бы просто foldr max Nothing, а с min не катит, потому что Nothing меньше всего

Alexander
26.10.2018
17:24:48
A64m
26.10.2018
17:25:16
kana
26.10.2018
17:25:40
да

A64m
26.10.2018
17:25:59
где safeMinimum это минимум, который на пустом списке работает

Alexander
26.10.2018
17:29:28
я правильно понял что это safeMinimum . catMaybes ?
Ну да, это повторяет решение Олега из скала чата. Правда safeMinimum или хотя-бы foldrMaybe в стд нет.

kana
26.10.2018
17:29:57
safeMinimum [] = Nothing safeMinimum xs = Just (minimum xs)

Google
A64m
26.10.2018
17:30:07
в задаче ограничение на base?

Alexander
26.10.2018
17:31:11
Да вообще задачи как таковой нет, но я думал, мало ли, появятся тут мастера бесточечного стиля и покажут класс.

Alexander
26.10.2018
17:32:52
fmap fst . uncons . sort . catMaybes

покатит?

сложность O(n) все в порядке

Alexander
26.10.2018
17:34:38
Alexander
26.10.2018
17:35:12
хотя на самом деле надо fold @@ Minumum

kana
26.10.2018
17:35:44
че за Minumum, нет такого

я помню, что раньше был newtype Min a = Min (Maybe a) instance Ord a => Monoid (Min a)

но сейчас ничего такого в base нет, только для полугруппы

Alexander
26.10.2018
17:36:34
где newtype Minumum a = Minumum (Just a) instance Monoid Minimum where mempty = Nothing Nothing <> x = x y <> Nothing = y (Just x) <> (Just y) = Just $ x <> y а @@ фича которой нету

угу

@@ тоже нету

учитывая текущий base это наверное должно быть fold @@ (Maybe Min)

A64m
26.10.2018
17:37:44
нонэмпти зато есть

Denis
26.10.2018
17:38:31
это также походу может быть какой-то findLastMin

Alexander
26.10.2018
17:38:57
о!

Denis
26.10.2018
17:40:19
например по аналогии можно написать как find findLast :: Foldable t => (a -> Bool) -> t a -> Maybe a findLast p = getLast . foldMap(Last . flip (liftA2 if' p Just) Nothing) простите за pointfree

A64m
26.10.2018
17:44:26
но нормальный человек просто линзами пользуется и все

Alexander
26.10.2018
17:46:29
> (coerce (fold :: [Data.Monoid.Last (Min Integer)] -> Data.Monoid.Last (Min Integer))) [Just 1, Just 2] :: Maybe Integer Just 2

Denis
26.10.2018
17:46:33

Страница 1548 из 1551