ChatCrawlerпоиск по публичному Telegram Открыть приложение
H

Haskell

1 686 участников
30 августа 2026
Е
У меня между комбинаторами в теоретическом изложении ( классике S,K.I) и тем что делает здесь Мегапарсек - лежит пропасть непонимания. НА каком принципе или на каком основании фреймворк Мегапарсек затащил к себе этот термин? Зачем в этой задаче мне знать кто там комбинатор? И как я это использую? Или комбинатоор - это общий подход языка Хаскель. Но я его не видел в туториалах. По классике туториалы описывали модули и функции и все.
В итоге Грин тред выполняется OS тредом, через капабилити, при forkOS Грин тред привязывается к конкретному OS (но не обязательно к конкретной капабилити, между ними может и мигрировать; выполняться будет только там даже если капабилити привязаны к OS тредам), вопрос был в том, может ли что-то ещё выполняться на этом OS треде, тк документация оставляет этот вопрос нераскрытым
A
По общей памяти чатика: могут только FFI вызовы и колбеки из них, но не другие green треды
D
Aleksandr VershilovВ итоге Грин тред выполняется OS тредом, через капабилити, при forkOS Грин тред привязывается к конкретному OS (но не обязательно к конкретной капабилити, между ними может и мигрировать; выполняться будет только там даже если капабилити привязаны к OS тредам), вопрос был в том, может ли что-то ещё в
Как по мне все довольно понятно: Using forkOS instead of forkIO makes no difference at all to the scheduling behaviour of the Haskell runtime system. It is a common misconception that you need to use forkOS instead of forkIO to avoid blocking all the Haskell threads when making a foreign call; this isn't the case. To allow foreign calls to be made without blocking all the Haskell threads (with GHC), it is only necessary to use the -threaded option when linking your program, and to make sure the foreign import is not marked unsafe.
Это параграф не отвечает вообще ни на один заданный вопрос
A
Абсолютно непонятно, что из него может быть очевидно в этом контексте
Исходя из логики вопроса и этого комментария можно сделать вывод, что один гринтред может зашедулится на другой гринтред в случае положительного ответа, а это противоречие
Возможно я неправильно понимаю как устроен рантайм и поэтому не могу понять логичность вопроса
D
А
И практика показывает, что forkOS получает тред в эксклюзивное пользование. Я ни разу не получал ситуации, что исключение посланное в питон получил другой тред. Гонки, когда тред, созданный forkOS завершался, на его месте создавался другой и уже он завершался были
Если ты сделаешь вызов из питона в хаскель то в тоже ос треде окажешься
A
Т.е haskell(pinned)->python->haskell
А
Причес в ноаом хаскеллетреде. Это тоже проблема с прерыванием кода. Куда бросать исключение?
Dima | No AI clubНо это ведь логика реализации самой капабалити. Для шедулера это абстракция и его реализация не имеет значения, разве нет?
При forkOS у тебя у треда выставляется флаг что он только на одном ос треде выполняется, в этом случае капабилити «переедет» на этот тред и будет выполнять зеленый
Aleksandr VershilovПри forkOS у тебя у треда выставляется флаг что он только на одном ос треде выполняется, в этом случае капабилити «переедет» на этот тред и будет выполнять зеленый
Ну на мой взгляд тут происходит смешение абстракций и комментарий про отсутствие разницы между ОС тредами и гринтредами вполне себе однозначно предостерегает от этого
отдельный ос тред приравнивается к гринтреду, а то как вызов FFI попадает на определенный ос тред через капабилити это уже деталь имплементации самого рантайма
D
а если прибивать капабилити к ядрам и везде использовать forkOn, то можно в принципе не прибегать к forkOS?
А
Ну так такие вопросы задают, когда становятся важны детали реализации. Вот мне надо получить ОС тред в эксклюзивное пользование
Открыть в Telegram Каталог площадок Искать в ChatCrawler

Слепок открытой публичной ленты из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог