Kayıt türlerini çakışan alanlarla birleştirin
Dec 31 2020
Takip koduna sahibim:
workWithImportantField :: forall fields. { importantField :: Int | fields } -> Input
workWithImportantField = ...
workWithImportantField $
maybe { importantField: 1 } identity (Just { importantField: 1, fieldIDontCareAbout: "whatever" })
Bu derlenmez çünkü ilk kayıtta fieldIDontCareAbout
. Bununla birlikte, birleşip içine forall fields. { importantField :: Int | fields }
geçmesi için gayet iyiyim workWithImportantField
. Bunu nasıl yapacağım?
Başarı olmadan çeşitli yerlere (ilk kayıt, ikinci kayıt, tüm ifade) tür ek açıklamaları eklemeyi denedim. Hep yerini alabilir identity
ile unsafeCoerce
, ama tip-güvenli bir çözüm istiyorum. İhtiyacım olan alanları identity
ile değiştirerek manuel olarak da seçebilirim \{ importantField } -> { importantField }
, ancak bu hiç hoş görünmüyor.
Yanıtlar
bklaric Dec 31 2020 at 05:10
Record.Extra'da bulunan identity
ile değiştirmek , türlerin birleştirilmesi için ikinci kayıttan " atılır " .pick
fieldIDontCareAbout
Donovan, Şarkılarından 1'ini The Beatles'ın "Lucy in the Sky with Diamonds" şarkısıyla karşılaştırdı
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Charly Reynolds Yakın Zamandaki Vokal Kord Ameliyatını Açıkladı: 'Şarkı Söylemekte Sorun Yaşıyordum'
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'