Вы читали это ? Значение поля default
на самом деле не имеет ничего общего со стороной Haskell, оно передается для задания описания «значения по умолчанию» вашей СУБД. В этом случае [PrvDemoOne]
передается непосредственно в SQLite, который будет интерпретировать его как бред (потому что это недопустимое выражение SQL), так что это либо игнорируется, либо (что здесь имеет место) обрабатывается так, как если бы вы не установить значение по умолчанию на всех.
Если вам нужно значение по умолчанию на стороне Haskell, вам просто нужно создать для этого функцию, т.е. что-то вроде
defaultUser :: Text -> Maybe Text -> User
defaultUser i maybePw = User { ident = i, password = maybePw, perms = [PrvDemoOne] }
Если вы хотите использовать сторону SQL по умолчанию, вам нужно написать соответствующее выражение SQL для значения, которое вы пытаетесь представить.
В примечании, не связанном с Haskell: «нормальный» способ представления списков (или, скорее, наборов в этом случае!) В SQL - через отношения, так что у вас обычно есть пользователи отображения отношений «многие ко многим» к их привилегиям вместо поля списка.