Dec. 13th, 2009

metaclass: (Default)
в норме должно было бы заставить мое руководство на обоих работах задуматься, "а не отправить ли меня за счет фирмы в санаторий мозги полечить".

Встраиваю в клиент к БД (который стоит примерно на паре-тройке сотен рабочих мест у нескольких десятков клиентов) экспорт текущего открытого отчета в формат хаскелевого модуля, с автоматическим объявлением типа. Чтобы можно было дальше это обработать в хаскеле, а то меня обычные тестовые примеры типа списка в пару элементов кортежей из двух полей, вгоняют в уныние и совершенно не отражают реальные производственные задачи.
metaclass: (Default)
Все таки в хаскеле кое-где проглядывают следы неадеквата, от которого не спасает даже система типов.
Вот например, если в исходнике написать десятичный литерал, типа 1.5, то для того, чтобы он нормально скомпилировался в некий тип данных, нужно чтобы этот тип был инстансом Fractional. А Fractional - это класс чисел поддерживающих деление, что, по моему, к десятичным литералам относится весьма слабо.
Вот, к примеру, нужно мне хранить эквивалент SQL типа NUMERIC(M,N). Я использую Data.Decimal, но записать оный Data.Decimal в нормальном виде в исходнике не получается, т.к. инстансом Fractional он не является, потому что операция деления в нем реализована весьма хитро и не совместима с (/). В принципе достаточно реализовать fromRational, но там свои заморочки, например, 1.5::Rational - это 3%2, что к Decimal как бэ не сразу и преобразуешь.

PS: Дурь я эту временно обошел, методом записи в явном виде: Decimal N (число*(10^N) где N - точность числа.
metaclass: (Default)
import Data.Encoding
import Data.Encoding.CP1251
import Data.Encoding.CP866
import qualified Data.ByteString as B

test1251 = B.writeFile "test1251" $ encodeStrictByteString CP1251 "жопий"
test866 = B.writeFile "test866" $ encodeStrictByteString CP866 "жопий"

Чтобы заставить оное заработать, пришлось по цепочке поставить encoding-0.6.2 зависящий от extensible-exceptions-0.1.1.0 и HaXml-1.20, который, в свою очередь, зависит от polyparse-1.4.

При этом гугл, скотина, первой ссылкой возвращает encoding-0.4.1, который под GHC 6.10.2 не собирается. Пока я заметил что собираю не последнюю версию, я успел при помощи лома и такой-то матери заставить собраться старую.

В общем, "ничего сложного", для того, чтобы заставить контору: а) закрыться в муках б) искать высокооплачиваемых спецов с кандитатской степенью в CS d) переписывать годами все на дотнете - подойдет идеально.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 8th, 2025 07:13 pm
Powered by Dreamwidth Studios