У меня есть несколько общих встроенных функций, например:
let inline getRatesImpl<'T when 'T : (member enantiomer : 'T) and 'T : equality>
(d : Dictionary<'T, (ReactionRate option * ReactionRate option)>)
(calculateRates : 'T -> RelatedReactions<'T>)
(r : 'T) =
match d.TryGetValue r with
| true, rates ->
rates
| false, _ ->
updateRelatedReactions d (calculateRates r) r
Функции используются следующим образом:
type FoodCreationModel (p : FoodCreationParam) =
let rateDictionary = new Dictionary<FoodCreationReaction, (ReactionRate option * ReactionRate option)>()
let calculateRates _ = getRates (Some p.foodCreationRate, Some 1.0) (None, None)
member __.getRates r =
getRatesImpl rateDictionary calculateRates r
member __.inputParams = p
Когда я вставляю разрыв внутри getRatesImpl
, он не попадаетв ФГУ.Даже если я поставлю разрыв, например, на getRates
(в строке getRatesImpl rateDictionary calculateRates r
) и затем нажму F11, FSI не попадет внутрь inline getRatesImpl
.Однако, это работает, и я могу проверить это, посмотрев, как изменяется словарь до и после вызова.
Некоторые из этих встроенных функций довольно сложны, и мне действительно нужно время от времени отлаживать их.
Вопрос в том, как?