Merge branch 'master' of gitlab.science:mlubbers/mTask
authorMart Lubbers <mart@martlubbers.net>
Fri, 23 Jun 2017 18:25:38 +0000 (20:25 +0200)
committerMart Lubbers <mart@martlubbers.net>
Fri, 23 Jun 2017 18:25:38 +0000 (20:25 +0200)
1  2 
Shares/mTaskShare.icl

diff --combined Shares/mTaskShare.icl
@@@ -6,17 -6,19 +6,19 @@@ import Utils.Device
  import iTasks
  import mTask
  import Data.List
+ import Data.Error
  import Data.Tuple
+ from Control.Monad import `b`
  from Data.Func import $
  from StdFunc import flip
  
  derive class iTask MTaskShare
  
  manageShares :: Task [MTaskDevice]
 -manageShares = viewInformation "" [] []//whileUnchanged deviceStoreNP
 -//    $ \devs->case devs of
 -//            [] = viewInformation "No devices yet" [] []
 -//            _ = allTasks (map manageSharesOnDevice devs)
 +manageShares = whileUnchanged deviceStoreNP
 +      $ \devs->case devs of
 +              [] = viewInformation "No devices yet" [] []
 +              _ = allTasks (map manageSharesOnDevice devs)
  
  manageSharesOnDevice :: MTaskDevice -> Task MTaskDevice
  manageSharesOnDevice dev = (case dev.deviceShares of
@@@ -123,11 -125,9 +125,9 @@@ getRealShare dev share = sdsFocus (
  deviceLens dev share = (mread, mwrite)
  where
        mread :: [MTaskDevice] -> MaybeError TaskException BCValue
-       mread devs = case find ((==)dev) devs of
-               Nothing = Error $ exception "Device doesn't exist anymore"
-               Just {deviceShares} = case find ((==)share) deviceShares of
-                       Nothing = Error $ exception "Share doesn't exist anymore"
-                       Just share = Ok share.MTaskShare.value
+       mread devs = mb2error (exception "Device lost") (find ((==)dev) devs)
+               `b` \d->mb2error (exception "Share lost") (find ((==)share) d.deviceShares)
+               `b` \s->Ok s.MTaskShare.value
        
        mwrite :: BCValue [MTaskDevice] -> MaybeError TaskException (Maybe [MTaskDevice])
        mwrite val devs = case partition ((==)dev) devs of