169 похожих чатов

А что-то такое подойдёт uniosWith (+) . map (\x -> singleton

(show . toConstr $ x) 1) . universe
? В результате будет Map String Int

3 ответов

5 просмотров

Не знаю, но тоже попробую, спасибо. Пока вот вариант выше (fmap (length &&& head) <<< groupBy (on (==) toConstr) <<< sort <<< toList $ yourTree) реконструирую по шагам, чтобы выяснить, что там происходит)

А не подскажете, откуда доставать unionWith и singleton ? Посмотрел в hoogle, но там много разных вариантов, часть требуют реализации Ord, например. А тут для типов в моей задачке реализованы только (Data, Eq, Show, Typeable) и некий аналог Show

Так типы немного не сходятся (с fromListWith тоже), вот так сошлись: map (unionWith (+) . (\x -> singleton (show . toConstr $ x) 1)) . universe Но возникает другая ошибка: Ambiguous type variable `a0' arising from a use of `toConstr' prevents the constraint `(Data a0)' from being solved. А почему? Я ведь и хочу toContr как раз, чтобы из любого a строка получалась. Потому что у меня там дерево, в котором N разных типов может быть. Допустим, нода типа T1 может быть сделана конструктором C1, который имеет три поля: C1 T1 T2 T3

Похожие вопросы

Обсуждают сегодня

Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
А чем вам питонисты не угодили?😂
.
79
Всем привет. Поделитесь, пожалуйста, опытом. Есть форма, на которой имеется dbgrid и кнопки: добавить, редактировать, удалить. Если нет записей в dbgrid, то кнопки редактирова...
Евгений
4
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
83
Вот смотрите у меня есть два стрима сейчас fs, cs: TStream; fs := TFileStream.Create('filename'); cs := TCompressionStream.Create(compression_level, fs); Я хочу сделать так: ...
notme
5
type TExtensions<GExtender>=class function GetExtension<GEntityExtenderType>:GEntityExtenderType; end; function TExtensions<GExtender>.GetExtension<GEntityExtenderType...
zamtmn
8
Всем здравствуйте! Я хотел узнать сколько стоит средняя месячная зарплата у Electron js разработчиков? Мне очень это важно и нужно, плиз помогите узнать эту инфу! Для Джунио...
U.K.
10
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Карта сайта