import Data.List
data Encoding = Multiple Int Char | Single Char deriving (Eq,Show,Ord)
Run Code Online (Sandbox Code Playgroud)
运行长度的编码
encode :: String -> [Encoding]
encode inputString =encoding (group inputString) []
encoding :: [String] -> [Encoding] -> [Encoding]
encoding groupString xs=
if (length groupString == 0)
then xs
else
case (head groupString) of
([c]) ->encoding (tail groupString) (xs ++ [Single c])
(x) -> encoding (tail groupString) (xs ++ [Multiple (length x) (head x)])
Run Code Online (Sandbox Code Playgroud)
运行长度的解码
decode :: [Encoding] -> String
decode listString = decoding listString []
decoding …Run Code Online (Sandbox Code Playgroud) testing4 = Map.fromList
(fmap (\(userid,email)->( User {userId=userid,userEmail=email},( (t2 userid), (t3 userid) ))) userList)
where
t2 userid= fmap (\(_,ppid,pact,pclas,pdes)-> Permission {permissionId=ppid,permissionAction=pact,permissionClass=pclas,permissionDescripton=pdes}
) (DL.filter (\(puid,_,_,_,_)-> userid == puid) individualPermissions)
t3 userid =DL.nub $ fmap (\(_,rid,_)->
Map.fromList (
fmap (\ (_,rrid,rrname) ->
(Role {roleId=rrid,roleName=rrname},
fmap (\(_,_,ppid1,pact1,pclas1,pdes1)->
Permission{permissionId=ppid1,permissionAction=pact1,permissionClass=pclas1,permissionDescripton=pdes1})
(DL.filter (\(plUID,plRID,_,_,_,_)-> plUID == userid && plRID == rrid) permissionList) )
) (DL.filter (\(ruid,_,_) -> ruid == userid && (case rid of
Just _ -> True
Nothing -> False)
) roleList)
)
) rolePermissions
Run Code Online (Sandbox Code Playgroud)
我想要这个类型地图用户的功能([权限],地图角色[权限]),但我得到它作为地图用户([权限],[地图角色[权限]])
这是带有数据 …
haskell ×2